官方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项目:
-
添加App Clip Target
5.png -
选择好Project,填写其它选项,点击“Finish”
6.png
Xcode会为你选择的选项创建所有必需的文件,并为你的App Clip添加一个Target:
会创建一个App Clip Scheme用于build和run你的App Clip。
会创建一个新增能力On Demand Install Capable。
App Clip的Bundle Identifier使用主应用的Bundle Identifier作为其前缀,后跟一个字符串。例如,如果主应用的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:
- 在Xcode中打开项目;然后,在Targets -> Signing & Capabilities中,点击“+ Capability”添加Associated Domains。
-
对于启动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中可以声明排除代码的条件。
然后在需要的地方添加一个条件,以排除你不想在你的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项目进行配置。
- 把 Apple App Site Association file添加到你的服务器上,可以参考Supporting Associated Domains in Your App。
- 在服务端创建或者已存在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">
- 在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 Experience和Responding to Invocations。
发布App Clip
App Clip需要对应的主应用。准备发布App Clip时,请将其作为主应用Archive的一部分提交。请注意,你的App Clip必须在App Store通过审核后,才能发布。