應用擴展程序會增加您的影響力
通過應用擴展程序,您可以將自定義功能和內(nèi)容擴展到應用之外朵耕,并在用戶與其他應用或系統(tǒng)進行交互時將其提供給用戶。
您可以創(chuàng)建應用程序擴展以啟用特定任務淋叶。例如阎曹,要讓用戶從Web瀏覽器發(fā)布到您的社交服務,您可以提供共享擴展煞檩〈ο樱或者,為了讓用戶了解自己喜歡的團隊形娇,您可以提供一個今日窗口小部件锰霜,在通知中心顯示當前的體育比分。您甚至可以創(chuàng)建一個應用程序擴展桐早,提供用戶可以使用的自定義鍵盤來代替iOS系統(tǒng)鍵盤。
主要對App Extension進行介紹。請繼續(xù)往下看:
App Extension的介紹
官方給的說法是:App Extension可以讓你擴展你的APP的自定義功能和內(nèi)容哄酝,使用戶可以在與其他應用或者系統(tǒng)進行互動的時候去使用它友存。翻譯的不一定準確,這樣說可能會好理解:我們平時看到的Widget陶衅、微信和QQ的share等等屡立,都是App Extension,下圖是一些例子:
其實就是我們經(jīng)巢缶看到的Widget膨俐,但是Widget只是Today Extension,除了Today Extension罩句,還有很多焚刺。
一個支持擴展的系統(tǒng)區(qū)域叫做一個extension point(擴展點)。每個擴展點的擴展都有自己獨有的使用方法和API门烂。你可以根據(jù)你的需求來選擇不同的擴展乳愉。官方API里面提出了一個名詞叫:Host app,我們可以把它理解為宿主的App也就是提供應用擴展界面顯示或者功能的App屯远。還有一個container app蔓姚,我們可以把它理解為容器App,就像上圖的微信share extension慨丐,容器app就是微信坡脐。
擴展和app不同,擴展無法單獨上架AppStore房揭。盡管你必須使用個app來包含并且分發(fā)你的extension挨措,extension也是一個單獨的二進制文件,獨立于用于傳遞和分發(fā)的container app崩溪。
你可以通過File--->New --->Target來創(chuàng)建Extension浅役,它和其他的target一樣,它和你的app project組合成為一個產(chǎn)品伶唯。
一個app可以有一個擴展觉既,也可以有多個擴展。最好的創(chuàng)建擴展的方式就是通過Xcode提供的Extension種類選擇自己需要的來創(chuàng)建乳幸,里面包含了必要的API以及方法實現(xiàn)瞪讼。
如果你想讓用戶去使用你的擴展,那么就需要把你的containing app發(fā)布到AppStore粹断,當用戶安裝了你的Containing app符欠,擴展也就安裝了。不同的擴展啟動的方式也不一樣瓶埋,例如Today Extension希柿,你需要Widget來展示到你的通知中心诊沪。擴展也不要亂用,擴展的最佳用戶體驗從來都是希望用戶操作更精簡曾撤、更快速端姚,并且專注于單個任務。
Extension的種類
我們可以在Xcode的File--->New--->Target里面看到不同平臺的Extension挤悉,包括iOS渐裸、watchOS、tvOS装悲、macOS等等昏鹃。這里主要介紹iOS,主要包括以下幾種Extensions:
1.Action Extension:動作擴展诀诊,在另一個應用程序的上下文中操作或者查看內(nèi)容
2.Audio Unit Extension:音頻單元擴展
3.Broadcast UI Extension:廣播UI 擴展
4.Broadcast Upload Extension:廣播上傳擴展
5.Call Directory Extension:呼叫目錄擴展
6.Content Blocker Extension:內(nèi)容攔截器擴展
7.Custom Keyboard Extension:鍵盤擴展洞渤,例如第三方的鍵盤,搜狗輸入法畏梆,百度輸入法等您宪。
8.iMessage Extension:消息的擴展
9.Intents Extension:Intents擴展
10.Intents UI Extension:Intents UI擴展
11.Notification Content Extension:通知內(nèi)容擴展
12.Notification Service Extension:通知服務擴展
13.Photo Editing Extension:圖片編輯擴展,在照片app中編輯照片或者視頻
14.Share Extension:分享擴展奠涌,發(fā)布一個共享網(wǎng)站或者與其他應用共享內(nèi)容宪巨。
15.Shared Links Extension:分享鏈接擴展
16.Spotlight Index Extension:Spotlight 索引擴展
17.Sticker Pack Extension:貼紙包擴展
18.Today Extension:Today擴展,可以快速獲取更新或者在通知中心的近日視圖中執(zhí)行一項快速任務溜畅。
Xcode和App Store幫助您創(chuàng)建和交付App Extensions
應用擴展程序與應用程序不同捏卓。雖然您必須使用應用程序來包含和傳遞擴展,但每個擴展都是一個獨立的二進制文件慈格,它獨立于用于傳遞擴展的應用程序而運行怠晴。
您可以通過向應用添加新target來創(chuàng)建應用擴展程序。與任何Target一樣浴捆,擴展Target指定組合在應用項目中構(gòu)建產(chǎn)品的設置和文件蒜田。您可以向單個應用添加多個擴展Target(包含一個或多個擴展的應用稱為包含應用)。
開始開發(fā)應用擴展程序的最佳方法是使用Xcode為兩個平臺上的每個擴展點提供的模板之一选泻。每個模板都包含特定于擴展點的實現(xiàn)文件和設置冲粤,并生成一個單獨的二進制文件,該二進制文件將添加到包含應用程序的包中页眯。
要向用戶分發(fā)應用擴展程序梯捕,請將包含應用程序提交到App Store。當用戶安裝包含應用程序時窝撵,還會安裝其包含的擴展程序傀顾。
安裝應用擴展程序后,用戶必須采取措施才能啟用它碌奉。通常短曾,用戶可以在其當前任務的上下文中啟用擴展寒砖。例如,如果您的擴展程序是“今日”窗口小部件错英,則用戶可以編輯“通知中心”中的“今日”視圖以啟用擴展程序入撒。在其他情況下隆豹,用戶可以使用“設置”(在iOS中)或“系統(tǒng)偏好設置”(在macOS中)來啟用和管理他們安裝的擴展程序椭岩。
用戶體驗不同上下文中的應用擴展
雖然每種類型的應用擴展程序都支持不同類型的任務,但是大多數(shù)擴展程序都有一些用戶體驗部分璃赡。在考慮設計擴展時判哥,了解所選擴展點的用戶體驗非常重要。從較高的層面來說碉考,所有擴展的最佳用戶體驗都是快速塌计,簡化并專注于單個任務。
用戶通過與某些系統(tǒng)提供的用戶界面(UI)交互來打開您的應用擴展程序侯谁。例如锌仅,用戶通過激活應用程序中系統(tǒng)提供的“共享”按鈕并從顯示的列表中選擇擴展名來訪問“共享”擴展。
雖然大多數(shù)應用擴展程序至少提供了一些自定義UI元素墙贱,但用戶在輸入擴展程序之前不會看到自定義用戶界面热芹。當用戶輸入您的擴展程序時,您的自定義用戶界面可以幫助向他們展示他們正在轉(zhuǎn)移到新的上下文中惨撇。由于用戶可以將您的擴展程序與當前應用程序區(qū)分開來伊脓,因此他們可以欣賞您提供的獨特功能。用戶將擴展意識視為單獨的實體也意味著他們可以識別和刪除行為不當或效果不佳的擴展魁衙。
為了讓用戶順利過渡到您的應用擴展程序报腔,您通常希望平衡自定義設計與與擴展點關聯(lián)的UI。例如剖淀,最好讓您的小部件看起來像今天視圖中所屬的小部件纯蛾。同樣,在您的照片編輯擴展程序中纵隔,它可以很好地創(chuàng)建與iOS中的照片協(xié)調(diào)的UI翻诉。
注意
即使您的應用擴展程序未顯示任何自定義用戶界面(圖標除外),用戶仍然了解您的擴展程序與當前應用程序不同巨朦,因為他們采取了特定操作來激活它米丘。