創(chuàng)建一個App Clip

官方Demo下載地址Feature-Rich App, 建議學(xué)者下載此Demo參考。

概述

在你的Xcode項目中,在你的應(yīng)用程序中target需要新建一個你的App Clip,App Clip與你的主應(yīng)用程序共享code和assets。在你的工程中App Clip與其他targets一樣,您可以使用Xcode在模擬器或設(shè)備上構(gòu)建、運(yùn)行和調(diào)試App Clip。此外,您必須配置web服務(wù)器以使系統(tǒng)能夠驗證App Clip的真實性。
*** Important
在創(chuàng)建App Clip之前,請參見:Developing a Great App Clip或者筆者的App Clips功能***

添加一個App Clip Target

創(chuàng)建一個App Clip,需要提供至少與App clip相同功能的主應(yīng)用工程,并且你應(yīng)該對主應(yīng)用和App clip使用相同的Xcode項目。如果你要啟動一個新的應(yīng)用項目,首先用Xcode創(chuàng)建一個新的iOS項目。如果要將App Clip添加到現(xiàn)有應(yīng)用程序中,請打開其Xcode項目,然后,將app clip target添加到Xcode項目:

  1. 添加App Clip Target


    5.png
  2. 選擇好Project,填寫其它選項,點擊“Finish”


    6.png

Xcode會為你選擇的選項創(chuàng)建所有必需的文件,并為你的App Clip添加一個Target:

  • 會創(chuàng)建一個App Clip Scheme用于build和run你的App Clip。

  • 會創(chuàng)建一個新增能力On Demand Install Capable。

  • Parent Application Identifiers Entitlement

  • App Clip的Bundle Identifier使用主應(yīng)用的Bundle Identifier作為其前綴,后跟一個字符串。例如,如果主應(yīng)用的Bundle Identifier為(AppIdentifierPrefix)com.example.MyApp,App Clip的Bundle Identifier將為(AppIdentifierPrefix)com.example.MyApp.Clip。

  • _XCAppClipURL環(huán)境變量作為app clip方案的一部分,允許您測試調(diào)用。

  • 支持與主應(yīng)用相同的設(shè)備,不包括macOS。

此外,Xcode為應(yīng)用Target創(chuàng)建一個新的構(gòu)建階段,該階段將App Clip嵌入到應(yīng)用程序中。

在將自己的代碼添加到App Clip Target之前,請在模擬器或設(shè)備上運(yùn)行App Clip。此時,應(yīng)用程序剪輯顯示一個空白的白色屏幕,因為您還沒有添加任何code和assets。

添加Associated Domains Entitlement

用戶從將調(diào)用URL傳遞到App Clip中會啟動App Clip,或者,如果用戶安裝主應(yīng)用以替換App Clip,調(diào)用URL會啟動主應(yīng)用。無論您選擇支持哪種調(diào)用,都必須將Associated Domains Entitlement添加到主應(yīng)用和App Clip Target:

  1. 在Xcode中打開項目;然后,在Targets -> Signing & Capabilities中,點擊“+ Capability”添加Associated Domains。
  2. 對于啟動App Clip或主應(yīng)用的每個URL,使用以下模式將其域名添加Associated Domains capability:appclips:<fully-qualified domain>。例如,添加appclips:example.com。


    7.png

除了添加Associated Domains Entitlement外,您還必須對服務(wù)器進(jìn)行更改,以允許系統(tǒng)在啟動前驗證你的App Clip。有關(guān)詳細(xì)信息,請參閱Configuring Your App Clip’s Launch Experience。
有關(guān)Associated Domains的信息,請參閱Make Changes to Your Server and Your Xcode Project。

添加 Code 和 Assets

App clips和主應(yīng)用使用相同的框架,向App clip的Target添加代碼或assert的方式與對其他Target添加方式都一樣。創(chuàng)建新的源文件和assets,或?qū)⒅鲬?yīng)用現(xiàn)有源文件和assets用作App Clip目標(biāo)的成員。為了提高項目的可維護(hù)性,主應(yīng)用和App Clip應(yīng)該盡可能多的共享代碼:

  • 如果你創(chuàng)建了一個新的應(yīng)用程序,在構(gòu)建它時要考慮到創(chuàng)建一個App Clip,并盡量模塊化、組件化代碼。例如,創(chuàng)建可重用組件,將它們打包為 Swift Packages,并在主應(yīng)用和App Clip中使用這些包。有關(guān)詳細(xì)信息,請參閱Organizing Your Code with Local Packages。

  • 如果你將一個App Clip添加到一個現(xiàn)有的應(yīng)用程序中,花時間重構(gòu)代碼使之模塊化,并在App Clip和主應(yīng)用之間共享代碼,以避免代碼重復(fù)。

  • 將assets資源添加到新的assets目錄下,主應(yīng)用和App Clip可以使用該目錄下的assets資源。有關(guān)詳細(xì)信息,請參見 About Asset Catalogs。

配置Active Compilation Conditions

在App Clip和主應(yīng)用之間共用代碼時,可能會遇到在App Clip中無法使用主應(yīng)用的某些代碼的情況。在這些情況下,請設(shè)置Active Compilation Conditions,在App Clip 的Targets ->Build Setting中可以聲明排除代碼的條件。


8.png

然后在需要的地方添加一個條件,以排除你不想在你的App Clip中使用的代碼。例如:

#if !APPCLIP
// Code you don't want to use in your app clip.
#else
// Code your app clip may access.
#endif

對服務(wù)器和Xcode項目進(jìn)行配置

在系統(tǒng)顯示app clip card或允許調(diào)用app clip之前,系統(tǒng)會驗證app clip的配置和啟動的URL。如果無法執(zhí)行驗證,系統(tǒng)將不會在桌面顯示app clip card,也不會啟動app clip。要使系統(tǒng)能夠驗證你的app clip,您需要對web服務(wù)器和Xcode項目進(jìn)行配置。

  1. 把 Apple App Site Association file添加到你的服務(wù)器上,可以參考Supporting Associated Domains in Your App。
  2. 在服務(wù)端創(chuàng)建或者已存在apple-app-site-association文件,在此文件中為App Clip添加appclips鍵值。下面的代碼是要添加的內(nèi)容,請注意apps鍵的值是一個數(shù)組,其中只有一個是app clip的app identifier。
{
   "appclips": {
       "apps": ["ABCED12345.com.example.MyApp.Clip"]
   }
   ...
} 

例如在網(wǎng)頁中配置App Clip的推薦條,若打開App Clip你還需要為你的HTML界面添加apple-itunes-app:

<meta name="apple-itunes-app" 
    content="app-clip-bundle-id=com.example.fruta.Clip,
    app-id=123456789">
  1. 在Xcode中,為app和app clip添加Associated Domains Entitlement配置。

配置和響應(yīng)

你在App Store Connect中配置的URL,是為了系統(tǒng)來啟動App Clip。因此,識別App Clip的URL來啟動你的App Clip,在啟動時對URL進(jìn)行響應(yīng),并在app Store Connect中注冊它們對創(chuàng)建App Clip至關(guān)重要。有關(guān)更多信息,請參考Configuring Your App Clip’s Launch ExperienceResponding to Invocations

發(fā)布App Clip

App Clip需要對應(yīng)的主應(yīng)用。準(zhǔn)備發(fā)布App Clip時,請將其作為主應(yīng)用Archive的一部分提交。請注意,你的App Clip必須在App Store通過審核后,才能發(fā)布。

最后編輯于
?著作權(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ù)。

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