iOS - App Extension

前言

iOS定義了程序擴(kuò)展供開發(fā)使用,可以解釋為一種用戶程序與系統(tǒng)程序的關(guān)聯(lián)。例如:共享,通知中心,鍵盤。

幾種類型的應(yīng)用程序擴(kuò)展
幾種類型的應(yīng)用程序擴(kuò)展

一、App Extension

應(yīng)用程序擴(kuò)展功能與應(yīng)用程序不同,每個擴(kuò)展程序都是獨立于應(yīng)用程序的二進(jìn)制文件。需要注意的是:

At a high level, the best user experience for all extensions is quick, streamlined, and focused on a single task.

這句話很有可能就是你App 擴(kuò)展功能審核不通過的主要原因。

1.Action Extension

2.Audio Unit Extension

3.Broadcast UI Extension

4.Broadcast Upload Extension

5.Call Directory Extension

6.Content Blocker Extension

7.Custom Keyboard Extension

8.Document Provider Extension

9.iMessage Extension

10.Intents Extension

11.Intents UI Extension

12.Notification Content Extension

13.Notification Service Extension

14.Photo Editing Extension

15.Share Extension

16.share Links Extension

17.Spotlight Index Extension

18.Sticker Pack Extension

19.Today Extension?

在“通知中心”的“今日”視圖中快速更新或執(zhí)行快速任務(wù)。

二、App Extension 工作方式

應(yīng)用程序通過擴(kuò)展應(yīng)用程序的事件來響應(yīng)用戶的選擇,從而激活應(yīng)用程序,然后使用其在應(yīng)用程序的的請求事件來執(zhí)行任務(wù)。

App Extension 生命周期

擴(kuò)展應(yīng)用程序主要與系統(tǒng)應(yīng)用進(jìn)行通信。

擴(kuò)展應(yīng)用程序與系統(tǒng)程序進(jìn)行通訊

通常情況下,運行應(yīng)用程序,其包含的擴(kuò)展應(yīng)用程序不一定會運行。在典型的請求/響應(yīng)事件中,系統(tǒng)應(yīng)用程序打開擴(kuò)展應(yīng)用程序,通過extensionContext來傳輸數(shù)據(jù)請求,擴(kuò)展程序執(zhí)行操作后,將結(jié)果返回給系統(tǒng)程序。

擴(kuò)展程序可以通過extensionContext.openURL:completionhandler:方法來打開應(yīng)用程序。任何擴(kuò)展程序和應(yīng)用程序都可以訪問Shared Resources中的數(shù)據(jù)。

擴(kuò)展程序可以與應(yīng)用程序間接通信

系統(tǒng)使用進(jìn)程間的通信來確保系統(tǒng)應(yīng)用程序和擴(kuò)展程序協(xié)同工作。

三、App Extension訪問限制

無法訪問shareApplication對象,因此無法使用該對象的任何方法。

應(yīng)用程序的庫文件,頭文件不可訪問,訪問需要重新添加到擴(kuò)展程序中。

不可訪問相機(jī)或者麥克風(fēng)(除iMessage擴(kuò)展程序,當(dāng)然iMessage使用需要在擴(kuò)展程序的Info.plist中配置NSCameraUsageDescription和NSMicrophoneDescription)

不可執(zhí)行長時間運行的后臺任務(wù)。(應(yīng)用擴(kuò)展程序可以使用NSURLSession對象)

可以使用AirDrop。

四、App Extension的創(chuàng)建

例如:Xcode->File->New->Target->Today Extension

通過這樣的方式創(chuàng)建出來的App Extension 一般會有一個文件包,所有的代碼操作就在這個文件包中進(jìn)行。

五、App Extension的方法介紹

當(dāng)系統(tǒng)應(yīng)用調(diào)用擴(kuò)展程序是會調(diào)用beginRequestWithExtensionContext:方法,擴(kuò)展程序可以通過extensionContext獲取系統(tǒng)數(shù)據(jù)。

獲?。簂et myExtensionContext = extensionContext

?其inputItems成員變量會攜帶系統(tǒng)信息,例如,分享的標(biāo)題,內(nèi)容文本,附件和用戶星系。

擴(kuò)展程序通過調(diào)用completeRequestReturningItems:completionHandler:方法,有選擇的將NSExtensionItem對象返回到系統(tǒng)程序或著cancelRequetWithError:方法中。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容