應(yīng)用擴展

2018-08-12 21:55 更新

應(yīng)用擴展

應(yīng)用擴展可以延伸應(yīng)用的使用范圍。當用戶使用其他應(yīng)用時,應(yīng)用擴展使得用戶仍能使用你應(yīng)用的核心功能。舉個例子,當人們在 Safari 中瀏覽網(wǎng)頁時,他們可以使用你的分享擴展來發(fā)送一張圖片或一篇文章到你的社交網(wǎng)站上?;蛘弋斒褂?Photos(照片)應(yīng)用時,人們可能會使用你的圖片編輯擴展來為一張圖片加上一個濾鏡效果。(在這些場景中,Safari 和照片應(yīng)用承載用戶使用擴展的場景,因而被稱為宿主應(yīng)用(host apps)。)

你需要提交包含應(yīng)用擴展的完整 iOS 應(yīng)用到 App Store(包含擴展的應(yīng)用被稱為容器應(yīng)用(containing app))。在你的容器應(yīng)用中啟用擴展之后,人們就可以在使用其他應(yīng)用時,使用擴展來執(zhí)行快速任務(wù)。例如,在郵件中瀏覽某個商品時,人們可以不用離開郵件應(yīng)用就使用你的動作擴展來把商品添加到購物清單中。 表 22-1 列舉了可以多個創(chuàng)建的 iOS 應(yīng)用擴展類型。

以下指南適用于所有類型的應(yīng)用擴展,針對特定類型應(yīng)用擴展的指南請參閱后續(xù)章節(jié)。(如果想了解如何開發(fā)、調(diào)試和發(fā)布一個擴展,請參閱 App Extension Programming Guide.)

確保是單任務(wù)。應(yīng)用擴展并不是應(yīng)用的精簡版,它幫助用戶在有全局目標的上下文中完成狹義范圍內(nèi)的有限任務(wù)。例如,動作擴展可以為用戶提供一種不同的方式來查看當前內(nèi)容。

保證用戶的交互是有限和流暢的。好的應(yīng)用擴展應(yīng)該只需幾步點擊就可以幫助人們完成任務(wù),這樣他們就能盡快回到之前的場景中。例如,分享擴展只需一次點擊即可完成一張圖片的分享。

將容器應(yīng)用及其應(yīng)用擴展的名稱保持一致。一個容器應(yīng)用中如果有多個擴展,需要使用不同的名稱,你需要確保用戶能夠理解你的擴展和應(yīng)用之間的關(guān)系。人們會在很多不同的情況下遇到擴展,如果他們當下沒有認出來,那么他們就未必會信任這些擴展。

大部分情況下,復用容器應(yīng)用的圖標。顯示用戶熟悉的圖標是獲得用戶信任的另一種方式。請注意,對于動作擴展來說,你應(yīng)該使用單色版本的容器應(yīng)用圖標(詳見分享和動作擴展)。

重要:和設(shè)計圖標和圖形一樣,不要重復使用 iOS 的圖標和圖片,不要為蘋果的產(chǎn)品和設(shè)計再設(shè)計一套圖片。

避免在擴展上顯示模態(tài)視圖。很多擴展默認以模態(tài)視圖來顯示,所以應(yīng)避免再疊加模態(tài)視圖。盡管有時候用戶可能會在擴展上遇到警告框,但是在設(shè)計擴展的流程時,應(yīng)避免出現(xiàn)模態(tài)視圖。

今天部件

人們會在通知中心的今天區(qū)域中查看今天部件(Today widgets)。因為人們會設(shè)置今天區(qū)域以顯示他們最關(guān)注的信息,所以在此進行設(shè)計可以有效幫助你的部件在這些用戶最重要的信息中占據(jù)一席之地。

設(shè)計與通知中心風格一致的外觀。當使用通知中心的默認邊距和背景時,你的今天部件就會給用戶以統(tǒng)一的體驗。為獲得最佳的結(jié)果,你應(yīng)該重點關(guān)注你的內(nèi)容而不是背景或者其他的,尤其應(yīng)該避免繪制一片純色背景。

注意:

iOS 會自動在自定義的部件內(nèi)容上方顯示應(yīng)用的圖標和標題(圖標會顯示在標題前面的空白處)。

將部件內(nèi)容與標題對齊。當你的部件內(nèi)容與標題對齊時,人們就可以很簡單地瀏覽今天視圖中他們想要的部件。遵守今天視圖中的邊距規(guī)范,并將內(nèi)容約束在如圖的部件內(nèi)容區(qū)內(nèi)。

一般情況下,使用白色的系統(tǒng)字體來顯示文本。在通知中心默認背景下白色文字會看起來較好。對于二級文本,可以使用系統(tǒng)提供的 vibrant 外觀樣式(查看 notificationCenterVibrancyEffect了解更多)。

提供通知中心式的體驗。人們訪問通知中心來獲取簡要的更新或者執(zhí)行一個非常簡單的任務(wù),所以今天部件最好只顯示適量的信息和進行有限的互動,特別是:

  • 避免用戶在部件中需要滾動或縱向移動來查看全部的信息。部件可以通過縱向擴展來顯示更多的信息,但若部件的高度超過通知中心的高度就不是一種好的體驗了,因為這樣會干擾其他部件的查看

  • 避免使用橫向掃動或拖曳,因為這會干擾在通知中心進行導航

  • 盡可能使用戶只需一步操作就完成任務(wù)或打開你的應(yīng)用(注意,在今天部件中鍵盤是不可用的)

  • 優(yōu)化性能以便人們可以即刻獲得有用的信息。可以考慮在本地緩存信息,以便當有更新時就可顯示最近信息。人們只希望在今天視圖中花很少的時間,如果部件使用內(nèi)存不當,iOS 就可能會終止它

在適當情況下,讓人們點擊你的今天部件來打開你的應(yīng)用。因為今天部件提供了專一的體驗,所以就能有效引導人們?nèi)サ侥愕膽?yīng)用以獲取更多信息或功能。最好不要顯示“打開應(yīng)用”按鈕,而是應(yīng)該讓你的整個今天部件都可被點擊來打開應(yīng)用。你也可以讓用戶點擊部件中的UI對象,以打開你的應(yīng)用并跳轉(zhuǎn)到關(guān)于此UI對象的視圖中。舉個例子,日歷部件顯示了今天的事件,如果用戶想要獲得某個事件的更多信息,他們可以點擊部件中的事件來打開日歷應(yīng)用進行查看。

注意:

雖然從部件打開應(yīng)用的方式對用戶來說還不錯,但繼續(xù)在部件中提供有用且及時的信息依然是很重要的。人們可不一定會欣賞一個功能只是打開應(yīng)用的今天部件。

如果可能,在今天部件中讓人們知道他們需要登錄來獲取有用的信息。如果你的今天不見需要人們登錄查看信息,展示一個信息去鼓勵他們登錄和解釋什么樣的內(nèi)容將會被呈現(xiàn)。例如,如果你的時間部件即將到來的預約是用戶登錄后展現(xiàn)的,你可能需要讓用戶“登錄我的應(yīng)用去查看即將到來的預約”。

不要制作一個今天不見需要打開除了你自己應(yīng)用外的應(yīng)用。一個模擬 iOS 主屏的行為的時間部件不會為你的用戶提供有用的功能。

分享和動作擴展

人們通過點擊應(yīng)用中的動作按鈕(Action button)來使用分享和動作擴展。在通過動作按鈕顯示的動作視圖控制器(activity view controller)中,動作擴展被列在底部,分享擴展被列在動作擴展之上。人們可以使用更多(More)按鈕來管理顯示在動作視圖控制器中的分享和動作擴展。

分享或動作擴展通常被認為是在當前用戶場景下用來輸入內(nèi)容之用。例如,當在 Safari 中閱讀一篇文章時,用戶可能會點擊動作按鈕并使用一個分享擴展來發(fā)送這篇文章到分享網(wǎng)站上,也可能會使用一個動作擴展來查看這篇文章的翻譯。

注意:

在動作視圖控制器中,iOS 只會顯示支持當前內(nèi)容類型的動作擴展。例如,當用戶當前內(nèi)容是視頻時,iOS 就不會顯示支持文本的動作擴展。

盡可能在分享擴展中使用系統(tǒng)提供的 UI。系統(tǒng)所提供的撰寫視圖控制器 (compose view controller) 提供給用戶一種一致的體驗,并能自動支持一些常用任務(wù),例如預覽和確認標準項,同步內(nèi)容,查看動畫,以及完成一封郵件。欲知更多關(guān)于使用系統(tǒng)提供的撰寫視圖控制器,請參見 App Extension Programming Guide 中的 Share.

如果上傳需要一定時間,那就應(yīng)考慮在分享擴展的容器應(yīng)用中顯示上傳進度。無論分享的文件有多大,人們都期待在點擊擴展中的發(fā)送或分享按鈕后,能立即返回他們之前的場景。你需要讓進度狀態(tài)隨時更新,但是人們不想每次上傳完畢后都收到通知,并且也無法自動重啟擴展。在這種場景下,在容器應(yīng)用中顯示上傳進度是一種解決方案,這樣容器應(yīng)用就可以在后臺處理任務(wù),并在遇到問題時發(fā)送通知。

動作擴展使用單色的應(yīng)用圖標。( 不同的是,分享擴展則應(yīng)該使用其容器應(yīng)用的彩色應(yīng)用圖標。) 要為動作擴展設(shè)計圖標時,你可能需要從創(chuàng)建一個應(yīng)用圖標的模版開始著手。如有需要,可以專注圖標所特有的元素來進行簡化設(shè)計。

如果你在容器應(yīng)用中提供了多個動作擴展,那么最好為他們設(shè)計一套圖標,且確保這套圖標中的每一個看起來都與容器應(yīng)用的圖標是有關(guān)聯(lián)的。

圖片編輯擴展

當人們在照片(Photos)中查看圖片或視頻時,可以使用圖片編輯擴展。一般來說,圖片編輯擴展能幫助用戶篩選圖片或進行一些其他的圖片或視頻編輯。在用戶確認之后,編輯后的內(nèi)容就會出現(xiàn)在照片應(yīng)用中。

照片應(yīng)用提供了一個模態(tài)視圖來顯示圖片編輯擴展的自定義 UI。當用戶在確認對圖片或視頻的編輯時選擇了取消(你必須要在代碼上保證存在這個行為),照片應(yīng)用還可以顯示一個確認視圖。

避免在圖片編輯擴展中使用導航欄。如圖所示,承載擴展的模態(tài)視圖已經(jīng)包含了導航欄,若再增加另一個導航欄,既會占據(jù)更多你的界面空間,還會使用戶產(chǎn)生困擾。(照片應(yīng)用默認會以全屏高度來顯示你的視圖,所以你的內(nèi)容會出現(xiàn)在內(nèi)建的導航欄之下。)

如果可以,讓用戶能夠預覽編輯結(jié)果。盡可能讓用戶在關(guān)閉擴展返回照片應(yīng)用之前看到他們編輯的成果。

文檔提供者擴展

文檔提供者擴展幫助人們在其他各種應(yīng)用中查閱你的應(yīng)用所管理的文檔。在宿主應(yīng)用(host app)中,文檔采集視圖控制器(document picker view controller)會顯示你的擴展所提供的UI(想要了解更多有關(guān)文檔采集視圖控制器的內(nèi)容,請查閱 UIDocumentPickerViewController Class Reference).

注意:

文檔提供者擴展由兩個不同的部分組成:文檔采集視圖控制器擴展和文件提供者擴展。文檔采集視圖控制器擴展包括了你的自定義 UI,文件提供者擴展實現(xiàn)對文件的訪問。為了簡單起見,本節(jié)所使用的術(shù)語文檔提供者擴展(Document Provider extension)是為了表述擴展中文檔采集視圖控制器部分的 UI 和體驗。

避免在文檔提供者擴展中使用導航欄。iOS 會顯示擴展的自定義 UI,而自定義 UI 又包含在文檔采集視圖控制器中基于導航欄的界面之中。所以,在內(nèi)建導航欄之下再顯示第二個導航欄會使用戶感到困惑,并且還會占據(jù)原本你的內(nèi)容區(qū)域。(文檔采集視圖控制器默認會以全屏高度來顯示你的視圖,所以你的內(nèi)容會出現(xiàn)在內(nèi)建的導航欄之下。)

自定義輸入法

人們在整個系統(tǒng)中使用帶有自定義輸入法的輸入法擴展來替換 iOS 的自帶輸入法。在啟用輸入法擴展之后,除了受保護的文本區(qū)域(例如密碼輸入?yún)^(qū))和手機鍵盤區(qū)(例如聯(lián)系人中的電話號碼區(qū))外,當人們點擊任何文本輸入?yún)^(qū)域后就能使用自定義輸入法。

為用戶提供明顯的方式來切換輸入法。人們對于 iOS 的輸入法切換按鈕很熟悉,他們會期望在你的輸入法中也有類似的體驗。

如果可能,在你的容器應(yīng)用中包括一個教程。如果必要,使用你的自定義鍵盤的容器應(yīng)用去給人們講解如何啟用和使用你的鍵盤。不要把這個信息直接放在鍵盤本身,因為它可能讓人們嘗試使用這個鍵盤時感到困惑。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號