创建一个App Clip

官方Demo下载地址Feature-Rich App, 建议学者下载此Demo参考。

概述

在你的Xcode项目中,在你的应用程序中target需要新建一个你的App Clip,App Clip与你的主应用程序共享code和assets。在你的工程中App Clip与其他targets一样,您可以使用Xcode在模拟器或设备上构建、运行和调试App Clip。此外,您必须配置web服务器以使系统能够验证App Clip的真实性。
*** Important
在创建App Clip之前,请参见:Developing a Great App Clip或者笔者的App Clips功能***

添加一个App Clip Target

创建一个App Clip,需要提供至少与App clip相同功能的主应用工程,并且你应该对主应用和App clip使用相同的Xcode项目。如果你要启动一个新的应用项目,首先用Xcode创建一个新的iOS项目。如果要将App Clip添加到现有应用程序中,请打开其Xcode项目,然后,将app clip target添加到Xcode项目:

  1. 添加App Clip Target


    5.png
  2. 选择好Project,填写其它选项,点击“Finish”


    6.png

Xcode会为你选择的选项创建所有必需的文件,并为你的App Clip添加一个Target:

  • 会创建一个App Clip Scheme用于build和run你的App Clip。

  • 会创建一个新增能力On Demand Install Capable

  • Parent Application Identifiers Entitlement

  • App Clip的Bundle Identifier使用主应用的Bundle Identifier作为其前缀,后跟一个字符串。例如,如果主应用的Bundle Identifier为(AppIdentifierPrefix)com.example.MyApp,App Clip的Bundle Identifier将为(AppIdentifierPrefix)com.example.MyApp.Clip。

  • _XCAppClipURL环境变量作为app clip方案的一部分,允许您测试调用。

  • 支持与主应用相同的设备,不包括macOS。

此外,Xcode为应用Target创建一个新的构建阶段,该阶段将App Clip嵌入到应用程序中。

在将自己的代码添加到App Clip Target之前,请在模拟器或设备上运行App Clip。此时,应用程序剪辑显示一个空白的白色屏幕,因为您还没有添加任何code和assets。

添加Associated Domains Entitlement

用户从将调用URL传递到App Clip中会启动App Clip,或者,如果用户安装主应用以替换App Clip,调用URL会启动主应用。无论您选择支持哪种调用,都必须将Associated Domains Entitlement添加到主应用和App Clip Target:

  1. 在Xcode中打开项目;然后,在Targets -> Signing & Capabilities中,点击“+ Capability”添加Associated Domains。
  2. 对于启动App Clip或主应用的每个URL,使用以下模式将其域名添加Associated Domains capability:appclips:<fully-qualified domain>。例如,添加appclips:example.com。


    7.png

除了添加Associated Domains Entitlement外,您还必须对服务器进行更改,以允许系统在启动前验证你的App Clip。有关详细信息,请参阅Configuring Your App Clip’s Launch Experience
有关Associated Domains的信息,请参阅Make Changes to Your Server and Your Xcode Project

添加 Code 和 Assets

App clips和主应用使用相同的框架,向App clip的Target添加代码或assert的方式与对其他Target添加方式都一样。创建新的源文件和assets,或将主应用现有源文件和assets用作App Clip目标的成员。为了提高项目的可维护性,主应用和App Clip应该尽可能多的共享代码:

  • 如果你创建了一个新的应用程序,在构建它时要考虑到创建一个App Clip,并尽量模块化、组件化代码。例如,创建可重用组件,将它们打包为 Swift Packages,并在主应用和App Clip中使用这些包。有关详细信息,请参阅Organizing Your Code with Local Packages

  • 如果你将一个App Clip添加到一个现有的应用程序中,花时间重构代码使之模块化,并在App Clip和主应用之间共享代码,以避免代码重复。

  • 将assets资源添加到新的assets目录下,主应用和App Clip可以使用该目录下的assets资源。有关详细信息,请参见 About Asset Catalogs

配置Active Compilation Conditions

在App Clip和主应用之间共用代码时,可能会遇到在App Clip中无法使用主应用的某些代码的情况。在这些情况下,请设置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

对服务器和Xcode项目进行配置

在系统显示app clip card或允许调用app clip之前,系统会验证app clip的配置和启动的URL。如果无法执行验证,系统将不会在桌面显示app clip card,也不会启动app clip。要使系统能够验证你的app clip,您需要对web服务器和Xcode项目进行配置。

  1. 把 Apple App Site Association file添加到你的服务器上,可以参考Supporting Associated Domains in Your App
  2. 在服务端创建或者已存在apple-app-site-association文件,在此文件中为App Clip添加appclips键值。下面的代码是要添加的内容,请注意apps键的值是一个数组,其中只有一个是app clip的app identifier。
{
   "appclips": {
       "apps": ["ABCED12345.com.example.MyApp.Clip"]
   }
   ...
} 

例如在网页中配置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配置。

配置和响应

你在App Store Connect中配置的URL,是为了系统来启动App Clip。因此,识别App Clip的URL来启动你的App Clip,在启动时对URL进行响应,并在app Store Connect中注册它们对创建App Clip至关重要。有关更多信息,请参考Configuring Your App Clip’s Launch ExperienceResponding to Invocations

发布App Clip

App Clip需要对应的主应用。准备发布App Clip时,请将其作为主应用Archive的一部分提交。请注意,你的App Clip必须在App Store通过审核后,才能发布。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。