應(yīng)用擴(kuò)展可以拓展應(yīng)用的使用范圍。當(dāng)用戶使用其他應(yīng)用時(shí),應(yīng)用擴(kuò)展使得他們?nèi)匀豢梢允褂媚愕膽?yīng)用的部分功能。例如,當(dāng)用戶使用 Safari 瀏覽網(wǎng)頁(yè)時(shí),他們可以使用分享擴(kuò)展來(lái)發(fā)送圖片或分享文章到你的社交網(wǎng)站應(yīng)用上;或者當(dāng)他們使用照片應(yīng)用時(shí),可能會(huì)使用你的圖片編輯擴(kuò)展,來(lái)為一張圖片加上濾鏡效果。(在這些場(chǎng)景中,Safari 和照片應(yīng)用為用戶提供了拓展途徑,因而被稱為主應(yīng)用( host apps )。)
你通過(guò)將應(yīng)用擴(kuò)展包含在一個(gè)功能完整的 ios 應(yīng)用中實(shí)現(xiàn),而同時(shí)這個(gè) iOS 應(yīng)用也是你 提交給 Apple Store 的。(包含擴(kuò)展的應(yīng)用被稱為容器應(yīng)用( containing app ))。在啟用擴(kuò)展之后,人們就可以在使用其他應(yīng)用的同時(shí),通過(guò)擴(kuò)展執(zhí)行快速任務(wù)。例如,在郵件中瀏覽某個(gè)商品時(shí),人們可以不用離開(kāi)郵件應(yīng)用就使用你的動(dòng)作擴(kuò)展,把商品添加到購(gòu)物清單中。
下表開(kāi)發(fā)者可以創(chuàng)建的應(yīng)用擴(kuò)展種類表
| 應(yīng)用擴(kuò)展 | 使用擴(kuò)展說(shuō)明 |
|---|---|
| 最近窗口部件 | 在通知中心的當(dāng)前視圖,獲取快速更新或執(zhí)行快速任務(wù) |
| 分享 | 發(fā)送到網(wǎng)站或與他人分享內(nèi)容 |
| 動(dòng)作 | 通過(guò)另一個(gè)應(yīng)用的上下文信息來(lái)操作或查看內(nèi)容 |
| 照片編輯 | 通過(guò)照片應(yīng)用編輯照片或視頻 |
| 文件提供器 | 訪問(wèn)、管理文件庫(kù) |
| 自定義鍵盤(pán) | 使用自定義鍵盤(pán)替代 iOS 系統(tǒng)提供的鍵盤(pán) |
以下指南適用于所有類型的應(yīng)用擴(kuò)展,針對(duì)特定類型應(yīng)用擴(kuò)展的指南請(qǐng)參閱后續(xù)章節(jié)。(
令單任務(wù)可用。應(yīng)用擴(kuò)展并不是應(yīng)用的精簡(jiǎn)版,相反,它幫助用戶在器全局目標(biāo)的上下文中完成小范圍內(nèi)的有限任務(wù)。例如,動(dòng)作擴(kuò)展可以為用戶提供一種不同的方式來(lái)查看當(dāng)前內(nèi)容。
保證用戶交互的有限、流暢。好的應(yīng)用擴(kuò)展應(yīng)該讓用戶可以僅通過(guò)幾步點(diǎn)擊就完成任務(wù),從而保證他們能盡快回到之前的場(chǎng)景中。例如,分享擴(kuò)展只需一次點(diǎn)擊即可完成一張圖片的分享。
讓容器應(yīng)用的名稱盡量包含其應(yīng)用擴(kuò)展的名稱。盡管在容器應(yīng)用中不同的擴(kuò)展應(yīng)該有不同的名字,但你需要確保用戶能夠明白擴(kuò)展和你的應(yīng)用之間的關(guān)系。用戶會(huì)在很多不同的情況下使用擴(kuò)展,如果不能辨識(shí)出擴(kuò)展的來(lái)源,那么他們就未必會(huì)信任這些擴(kuò)展。
大部分情況下,復(fù)用容器應(yīng)用的圖標(biāo)。顯示用戶熟悉的圖標(biāo)是獲得用戶信任的另一種方式。請(qǐng)注意,對(duì)于動(dòng)作擴(kuò)展來(lái)說(shuō),你應(yīng)該使用單色版本的容器應(yīng)用圖標(biāo)。
重要:和設(shè)計(jì)圖標(biāo)和圖形一樣,不要重復(fù)使用iOS的圖標(biāo)和圖片,不要為蘋(píng)果的產(chǎn)品和設(shè)計(jì)再創(chuàng)建一套圖片。 避免在擴(kuò)展上部顯示模態(tài)視圖。很多擴(kuò)展默認(rèn)以模態(tài)視圖來(lái)顯示,所以應(yīng)避免再疊加模態(tài)視圖。盡管有時(shí)候用戶可能會(huì)在擴(kuò)展上部看到警告框,但是在設(shè)計(jì)擴(kuò)展的工作流時(shí),應(yīng)避免出現(xiàn)模態(tài)視圖。
人們會(huì)在通知中心的最近區(qū)中查看最近窗口部件(Today widgets)。由于用戶會(huì)設(shè)置最近區(qū)令其顯示他們最關(guān)注的信息,所以設(shè)計(jì)你的應(yīng)用最近窗口部件時(shí),應(yīng)當(dāng)以獲取用戶最關(guān)注信息中的一席之地為目標(biāo)。
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/widget_experience_2x.png" alt="" />
設(shè)計(jì)與通知中心風(fēng)格一致的外觀。當(dāng)使用通知中心的默認(rèn)邊距和背景時(shí),你的最近窗口部件就會(huì)帶給用戶統(tǒng)一的觀感。為獲得最佳的效果,你應(yīng)該重點(diǎn)關(guān)注你的內(nèi)容而不是背景或其他,尤其應(yīng)該避免繪制一片純色背景。
注意:iOS會(huì)自動(dòng)在自定義的部件內(nèi)容上方顯示應(yīng)用的圖標(biāo)和標(biāo)題(圖標(biāo)會(huì)顯示在標(biāo)題前面的空白處)。
將部件內(nèi)容與標(biāo)題對(duì)齊。當(dāng)你的部件內(nèi)容與標(biāo)題對(duì)齊時(shí),人們就可以很簡(jiǎn)單地瀏覽到他們想要的部件的當(dāng)前視圖。遵守當(dāng)前視圖中的邊距規(guī)范,并將內(nèi)容約束在如圖的部件內(nèi)容區(qū)內(nèi)。
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/WidgetSpec_2x.png" alt="" />
一般情況下,使用白色的系統(tǒng)字體來(lái)顯示文本。在通知中心默認(rèn)背景下白色文字會(huì)看起來(lái)較好。對(duì)于二級(jí)文本,可以使用系統(tǒng)提供的vibrant外觀樣式(查看notificationCenterVibrancyEffect了解更多)。
提供通知中心式的體驗(yàn)。人們?cè)L問(wèn)通知中心來(lái)獲取簡(jiǎn)要的更新或者執(zhí)行一個(gè)非常簡(jiǎn)單的任務(wù),所以最近部件最好只顯示適量的信息、進(jìn)行有限的互動(dòng),特別是:
在適當(dāng)情況下,使用戶可以通過(guò)點(diǎn)擊最近部件打開(kāi)你的應(yīng)用。因?yàn)樽罱考峁┝艘环N有限、精簡(jiǎn)的體驗(yàn),所以它能有效引導(dǎo)人們到你的應(yīng)用了解更多信息或功能。最好不要提供一個(gè)“打開(kāi)應(yīng)用”按鈕,而是應(yīng)該讓你的整個(gè)最近部件都可以通過(guò)點(diǎn)擊打開(kāi)應(yīng)用。你也可以讓用戶通過(guò)點(diǎn)擊部件中的一個(gè)合適的UI部件,來(lái)打開(kāi)你的應(yīng)用中與這個(gè)UI部件相關(guān)的界面。比如,日歷窗口部件顯示了當(dāng)天的事務(wù),如果用戶想要獲得某個(gè)事務(wù)的更多信息,他們可以點(diǎn)擊部件中的該事務(wù)提醒來(lái)打開(kāi)日歷應(yīng)用進(jìn)行查看。
注意:雖然通過(guò)窗口部件打開(kāi)應(yīng)用是不錯(cuò)的用戶體驗(yàn),但持續(xù)在部件中提供有用且及時(shí)的信息依然很重要。用戶不會(huì)喜歡一個(gè)功能只是打開(kāi)相應(yīng)應(yīng)用的最近窗口部件。
人們通過(guò)點(diǎn)擊應(yīng)用中的動(dòng)作按鈕(Action button)來(lái)使用分享和動(dòng)作擴(kuò)展。在通過(guò)動(dòng)作按鈕顯示的動(dòng)作視圖控制器(activity view controller)中,動(dòng)作擴(kuò)展被列在底部,分享擴(kuò)展被列在動(dòng)作擴(kuò)展之上。人們可以使用更多(More)按鈕來(lái)管理顯示在動(dòng)作視圖控制器中的分享和動(dòng)作擴(kuò)展。
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/share_action_appex_2x.png" alt="" />
分享或動(dòng)作擴(kuò)展通常被認(rèn)為是在當(dāng)前用戶場(chǎng)景下用來(lái)輸入內(nèi)容之用。例如,當(dāng)在 Safari 中閱讀一篇文章時(shí),用戶可能會(huì)點(diǎn)擊動(dòng)作按鈕并使用一個(gè)分享擴(kuò)展來(lái)發(fā)送這篇文章到分享網(wǎng)站上,也可能會(huì)使用一個(gè)動(dòng)作擴(kuò)展來(lái)查看這篇文章的翻譯。
注意:在動(dòng)作視圖控制器中,iOS 只會(huì)顯示支持當(dāng)前內(nèi)容類型的動(dòng)作擴(kuò)展。例如,當(dāng)用戶當(dāng)前內(nèi)容是視頻時(shí),iOS 就不會(huì)顯示支持文本的動(dòng)作擴(kuò)展。
盡可能在分享擴(kuò)展中使用系統(tǒng)提供的UI。系統(tǒng)所提供的構(gòu)造視圖控制器(compose view controller)提供給用戶一種一致的體驗(yàn),并能自動(dòng)支持一些常用任務(wù),例如預(yù)覽和確認(rèn)標(biāo)準(zhǔn)項(xiàng),同步內(nèi)容,查看動(dòng)態(tài)效果,以及完成一封郵件,欲知更多關(guān)于使用系統(tǒng)提供的撰寫(xiě)視圖控制器,請(qǐng)參見(jiàn) App Extension Programming Guide 中的Share。
如果上傳需要一定時(shí)間,考慮在分享擴(kuò)展的容器應(yīng)用中顯示上傳進(jìn)度。無(wú)論分享的文件有多大,人們都期待在點(diǎn)擊擴(kuò)展中的發(fā)送或分享按鈕后,能立即返回他們之前的場(chǎng)景。雖然你需要讓進(jìn)度狀態(tài)可以更新,但是用戶不希望每次上傳完畢后都收到通知,并且擴(kuò)展的重載也無(wú)法通過(guò)編程實(shí)現(xiàn)。在這種情況下,在容器應(yīng)用中顯示上傳進(jìn)度是一種不錯(cuò)解決方案,這樣容器應(yīng)用就可以在后臺(tái)處理任務(wù),并在遇到問(wèn)題時(shí)發(fā)送通知。
為動(dòng)作擴(kuò)展使用單色的應(yīng)用圖標(biāo)。(與之相反,分享擴(kuò)展則應(yīng)該使用其容器應(yīng)用的彩色應(yīng)用圖標(biāo)。)當(dāng)為動(dòng)作擴(kuò)展設(shè)計(jì)圖標(biāo)時(shí),你可能需要從創(chuàng)建一個(gè)應(yīng)用圖標(biāo)的模版開(kāi)始著手。如有需要,可以只關(guān)注圖標(biāo)所特有的元素來(lái)簡(jiǎn)化設(shè)計(jì)。 如果你在容器應(yīng)用中提供了多個(gè)動(dòng)作擴(kuò)展,那么最好為他們?cè)O(shè)計(jì)一套圖標(biāo),并確保這套圖標(biāo)中的每一個(gè)看起來(lái)都與容器應(yīng)用的圖標(biāo)是關(guān)聯(lián)的。
當(dāng)人們?cè)谡掌≒hotos)應(yīng)用中查看圖片或視頻時(shí),可以使用圖片編輯擴(kuò)展。一般來(lái)說(shuō),圖片編輯擴(kuò)展能幫助用戶為圖片添加濾鏡或進(jìn)行一些其他的圖片或視頻編輯。在用戶保存了變更后,編輯過(guò)的內(nèi)容就能照片應(yīng)用中查看。 照片應(yīng)用提供了一個(gè)模態(tài)視圖來(lái)顯示你圖片編輯擴(kuò)展的自定義 UI 。當(dāng)用戶在確認(rèn)取消對(duì)圖片或視頻的編輯時(shí)(你必須要在代碼上確保可以進(jìn)行這個(gè)操作),照片應(yīng)用還可以顯示一個(gè)確認(rèn)視圖。
避免在圖片編輯擴(kuò)展中使用導(dǎo)航欄。如圖所示,承載擴(kuò)展的模態(tài)視圖已經(jīng)包含了導(dǎo)航欄,若再增加另一個(gè)導(dǎo)航欄,既會(huì)占據(jù)更多你的界面空間,還會(huì)使用戶產(chǎn)生困擾。(照片應(yīng)用默認(rèn)會(huì)以全屏高度來(lái)顯示你的視圖,所以你的內(nèi)容會(huì)出現(xiàn)在內(nèi)建的導(dǎo)航欄之下。)
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/photo_filter_appex_2x.png" alt="" />
如果可以,讓用戶能夠預(yù)覽編輯效果。盡可能讓用戶在關(guān)閉擴(kuò)展返回照片應(yīng)用之前看到他們編輯的效果。
文檔提供器擴(kuò)展令用戶可以在其他各種應(yīng)用中查閱你的應(yīng)用所管理的文檔。在主應(yīng)用(host app)中,文檔采集視圖控制器(document picker view controller)會(huì)顯示你的擴(kuò)展所提供的 UI(想要了解更多有關(guān)文檔采集視圖控制器的內(nèi)容,請(qǐng)查閱UIDocumentPickerViewController Class Reference)。
注意:文檔提供者擴(kuò)展由兩個(gè)不同的部分組成:文檔采集視圖控制器擴(kuò)展和文件提供者擴(kuò)展。文檔采集視圖控制器擴(kuò)展包含了你的自定義 UI,文件提供者擴(kuò)展則實(shí)現(xiàn)對(duì)文件的訪問(wèn)。為了方便,本節(jié)所使用的術(shù)語(yǔ)文檔提供者擴(kuò)展(Document Provider extension)是用來(lái)描述擴(kuò)展中,文檔采集視圖控制器部分的 UI 和體驗(yàn)。
避免在文檔提供者擴(kuò)展中使用導(dǎo)航欄。iOS會(huì)在文檔采集視圖控制器基于導(dǎo)航欄的界面內(nèi),顯示你擴(kuò)展的自定義 UI 。所以,在內(nèi)建導(dǎo)航欄之下再顯示第二個(gè)導(dǎo)航欄會(huì)使用戶感到困惑,并且還會(huì)占據(jù)原本你的內(nèi)容區(qū)域。(文檔采集視圖控制器默認(rèn)會(huì)以全屏高度來(lái)顯示你的視圖,所以你的內(nèi)容會(huì)出現(xiàn)在內(nèi)建的導(dǎo)航欄之下。)
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/doc_provider_appex_2x.png" alt="" />
人們使用帶有自定義鍵盤(pán)的輸入法擴(kuò)展來(lái)替換 iOS 自帶的輸入法。在啟用輸入法擴(kuò)展之后,當(dāng)人們點(diǎn)擊絕大部分文本輸入?yún)^(qū)域時(shí)就能使用自定義輸入法。但可以使用自定義輸入法的不包括受保護(hù)的文本區(qū)域(例如密碼輸入?yún)^(qū))和電話鍵盤(pán)區(qū)(例如聯(lián)系人中的電話號(hào)碼區(qū))。
http://wiki.jikexueyuan.com/project/ios-human-interface-guidelines/images/alternate_keyboards_2x.png" alt="alternate_keyboards_2x.png" />
為用戶提供明顯的方式來(lái)切換輸入法。人們對(duì)于 iOS 的輸入法切換按鈕很熟悉,他們會(huì)期望在你的輸入法中也有類似的體驗(yàn)。