[譯]AppExtension程式設計指南:擴充套件基礎1

taoZen發表於2018-11-18

App Extension Programming Guide-App Extension Essentials AppExtension程式設計指南:擴充套件基礎

App Extensions Increase Your Impact 通過應用擴充套件提升你的應用

iOS8/OS X v10.10

翻譯自蘋果官方文件 App Extension Programming Guide--App Extensions Essentials

重要提示: 該文件是一個開發過程中使用API或技術的預釋出文件。Apple提供該文件的目的在於讓開發者儘快熟悉新技術和新的程式設計介面,使得開發者針對蘋果品牌裝置進行開發。但是該文件會不斷的更新,使用該文件提供的技術開發的軟體應該基於最終作業系統軟體和最終的文件進行測試。要時刻關注該文件的更新,以便了解新的API和技術特性。

當iOS 8.0和OS X v10.10釋出後,一個全新的概念出現在我們眼前,那就是應用擴充套件。顧名思義,應用擴充套件允許開發者擴充套件應用的自定義功能和內容,能夠讓使用者在使用其他app時使用該項功能。你可以開發一個應用擴充套件來執行某些特定的任務,使用者使用該擴充套件後就可以在多個上下文環境中執行該任務。比如說,你提供了一個能讓使用者把內容分享到社交網站的擴充套件,使用者可以在閱讀郵件資訊或者上網時通過app擴充套件來發表評論。或者說,如果你提供了一個能展示當前比賽分數的擴充套件,那麼使用者可以把它放在通知中心,這樣在他們開啟Today view時就能看到最新的比分。你甚至可以開發一個提供自定義鍵盤的擴充套件,使用者可以用它代替iOS系統自帶的鍵盤。

APP擴充套件的型別

iOS和OS X定義了幾種應用擴充套件的型別,每一種型別的擴充套件都對應系統中的一塊區域,比如分享、通知中心以及鍵盤等。我們把這些支援擴充套件的區域稱為擴充套件點。每個擴充套件點都定義了使用策略並提供了API,你可以用來針對該區域建立擴充套件。要注意的一點是,當你針某個擴充套件點開發應用擴充套件時,該應用擴充套件的功能必須要符合該擴充套件點的功能特性。

table 1-1 列出了iOS和OS X中的擴充套件點,並列舉了對應擴充套件點的示例任務。

table 1-1

由於系統定義了擴充套件特定領域,所以當你在開發應用擴充套件時,很重要的一點是,你要選擇最能匹配你想在app中提供的功能的區域。比如說你要開發一個分享資訊的應用擴充套件,那麼你只能選擇分享擴充套件點,而不能使用Today或Action擴充套件點。

重要提示:你開發的app擴充套件要精確地匹配Table 1-1中列出的擴充套件點。你不能開發一個通用的擴充套件來匹配一個以上的擴充套件點,

Xcode和App Store幫助你建立並交付應用擴充套件

應用擴充套件不同於應用,雖然你需要基於應用去開發應用擴充套件,但是每個應用擴充套件都是獨立於應用執行的二進位制檔案。

當你要建立一個應用擴充套件時,需要在專案中建立一個新的Target。和其他 Target 一樣,擴充套件 Target 將設定資訊和相關檔案打包在Products檔案下生成一個副檔名為.appex的包。你可以在應用專案中建立多個擴充套件Target(一個應用程式可以包含一個或多個應用擴充套件,該應用程式稱為主體應用程式)。

開發一個應用擴充套件最好的切入點是使用 Xcode 在兩個平臺上為每個擴充套件點提供的模板去開發。每個模板包含擴充套件點的具體實現檔案和相關設定,並生成獨立的二進位制檔案新增到應用程式的包中。

注意:在iOS中,包含擴充套件的應用必須提供一個擴充套件之外的功能。而在OS X中沒有這個硬性要求,一個包含擴充套件的應用不要求必須提供一個額外功能。

為了將擴充套件分發給使用者,你需要提交一個包含擴充套件的應用到App Store。使用者只要下載並安裝了你的應用,那麼同時也自動安裝了你的應用擴充套件。

當安裝了應用擴充套件之後,使用者首先必須要開啟他們。通常,使用者可以在他們當前任務的上下文環境中啟動擴充套件。比如,如果你的擴充套件啟用了“Today”通知,那使用者可以在通知中心編輯“Today ”view 來新增你的擴充套件。在其他情況中,使用者可以使用 iOS 中的“Settings”或者 OS X 中的“System Preferences”來啟用和管理擴充套件。

使用者在不同的情形下體驗不同的應用擴充套件

雖然每種型別的應用擴充套件的功能都是不同的,但對大部分擴充套件來說,它們在使用者體驗上還是有一些共同點的。如果你準備開發一個應用擴充套件,有一點很重要,那就是要理解在你選擇的擴充套件點中,使用者體驗是什麼樣的。從一個更高角度看,對於所有擴充套件來說,最佳的使用者體驗是快速、流暢以及只關注單一任務。

通常使用者通過與系統提供的使用者介面進行互動來開啟應用擴充套件。比如說,使用者在app中通過啟用系統提供的分享按鈕來訪問 Share 擴充套件,並從展示的列表中選擇擴充套件。一個應用擴充套件必須要提供一個圖示,以便使用者選擇和識別,通常情況下,應用擴充套件的圖示與應用程式的圖示是相同的。

雖然大多數的應用程式擴充套件都提供了一些自定義的UI元素,但一般使用者不會看到你的自定義使用者介面,除非他們進入到應用程式擴充套件中。當使用者進入應用擴充套件,你的自定義UI可以讓使用者知曉他們正進入一個新的上下文環境。由於使用者可以把你的擴充套件和當前應用區別開來,所以他們會欣賞你提供的獨特功能。當使用者意識到擴充套件其實是獨立執行的實體時,他們也可以確認並移除體驗不好或功能不好的擴充套件。

為了讓使用者平滑過渡到你的應用程式擴充套件,你要斟酌自定義介面與擴充套件點介面的風格,做一個權衡。比如說,一個很好的方法就是讓你的外掛看起來像是通知中心中原生的Widget,再比如說照片編輯擴充套件,你應該建立一個和 iOS 中 Photos 應用風格相協調的使用者介面。

注意:即使你的應用程式擴充套件沒有展示自定義UI(不包括圖示),但使用者仍然知道該擴充套件不同於當前的應用,因為它們需要採用特定的操作來啟用。

相關文章