SwiftUI AppClip 之 02 创建一个App Clip流程

创建一个应用剪辑

创建一个可立即启动并向未安装完整应用程序的用户提供其某些相关应用程序功能的应用程序剪辑。

使用教程

应用程序剪辑是应用程序的轻量级版本,可在人们需要的地方和时间提供某些功能。 使用Xcode,您可以将应用剪辑的目标添加到应用的Xcode项目中,并在应用剪辑和应用之间共享代码和资产。 就像处理项目中的其他目标一样,您可以使用Xcode在模拟器或设备上构建,运行和调试应用程序剪辑。 此外,您必须配置Web服务器,以使系统能够验证您的应用剪辑的真实性。

添加应用剪辑目标

应用程序剪辑需要一个相应的应用程序,该应用程序至少应提供与该应用程序剪辑相同的功能,并且您通常会对完整应用程序和应用程序剪辑使用相同的Xcode项目。 如果您要开始一个新的应用程序项目,请首先使用Xcode创建一个新的iOS项目。 如果要将应用剪辑添加到现有应用中,请打开其Xcode项目。 然后,将应用剪辑目标添加到Xcode项目:

  • 使用应用剪辑模板添加新目标。
  • 选择一个产品名称,为您的应用程序剪辑选择适用的选项,然后单击“完成”。
新建项目

Xcode为您选择的选项创建所有必需的文件,并使用以下命令为您的应用剪辑添加目标:

  • 一种构建和运行您的应用程序剪辑及其测试的方案。要构建和运行完整的应用程序,请继续使用现有方案。
  • 一种名为“按需安装功能”的新功能。
  • 父应用程序标识符权利。
  • 应用剪辑的应用标识符,使用完整应用的应用标识符作为前缀,后跟字符串。例如,如果您完整的应用程序的应用程序标识符为(AppIdentifierPrefix)com.example.MyApp,则应用剪辑的应用程序标识符将为(AppIdentifierPrefix)com.example.MyApp.Clip。
  • _XCAppClipURL环境变量是应用程序剪辑方案中的一部分,可让您测试调用。
  • 支持与完整应用程序相同的设备,不包括macOS。

此外,Xcode为应用程序目标创建一个新的构建阶段,该阶段将应用程序剪辑嵌入到应用程序中。

在将自己的代码添加到应用剪辑目标之前,请在模拟器或设备上运行应用剪辑。此时,由于您尚未添加任何代码和资产,因此该应用程序剪辑显示为空白屏幕。

添加关联的域权利

用户从将调用URL传递给应用程序剪辑的调用中启动应用程序剪辑,或者如果用户安装了应用程序以替换应用程序剪辑,则将其传递给完整的应用程序。无论您选择支持哪种调用,都必须将“关联域权利”添加到应用程序和应用程序剪辑目标中:

  • 在Xcode中打开您的项目;然后,在项目设置中,启用“关联域”功能以添加“关联域权利”。

  • 对于每个启动您的应用程序片段或完整应用程序的URL,使用以下模式将其域添加到“关联的域”功能中:appclips:<完全限定的域>。例如,添加appclips:example.com。

除了添加“关联的域权利”外,您还必须对服务器进行更改,以允许系统在启动之前验证您的应用剪辑。


添加代码和资产

应用程序剪辑与完整应用程序使用相同的框架,并且向应用程序剪辑的目标添加代码或资产的工作原理与对其他任何目标一样。创建新的源文件和资产,或使用现有的源文件和资产作为应用剪辑目标的成员。为了确保项目的可维护性,完整的应用程序和应用程序剪辑应共享尽可能多的代码:

如果您创建一个新应用程序,则在创建该应用程序时要牢记创建一个应用程序剪辑,并遵循促进模块化代码库的最佳实践。例如,创建可重复使用的组件,将它们捆绑为Swift软件包,然后在完整应用程序和应用程序剪辑中使用这些软件包。

如果将应用程序剪辑添加到现有应用程序,请预留时间将其代码库重构为模块化,并在应用程序剪辑和完整应用程序之间共享代码,以避免重复代码。

将共享资产添加到新资产目录,然后在完整应用程序和应用程序剪辑中使用该目录。

使用主动编译条件

在应用片段和完整应用之间共享代码时,可能会遇到无法在应用片段中使用某些应用代码的情况。 在这些情况下,请利用“活动编译条件”构建设置,在其中可以声明排除代码的条件。


使用主动编译条件

首先,导航到应用剪辑目标的构建设置,然后为“活动编译条件”构建设置创建一个新值; 例如APPCLIP。 然后在需要的地方在共享代码中添加一个检查,以排除您不想在应用程序剪辑中使用的代码。

以下代码检查您添加到“活动编译条件”构建设置中的APPCLIP值。

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

现在,在模拟器或设备上构建,运行和调试您的应用剪辑。

注意:在开发过程中,请按照“测试App Clip的启动体验”中的说明在本地或在TestFlight中测试URL。

对您的服务器和Xcode项目进行更改

系统出示应用程序剪辑卡或允许应用程序剪辑调用之前,它会验证应用程序剪辑的配置和调用URL。如果无法执行验证,则不会显示应用剪辑卡,也不会启动应用剪辑。为了使系统能够验证您的应用剪辑,您需要对Web服务器和Xcode项目进行更改。

首先,按照在应用程序中支持关联域中的描述,将Apple App Site Association文件添加到您的服务器。接下来,使用appclips键为应用程序剪辑添加一个条目。如果您先前已将Apple App Site Association文件添加到服务器,则将appclips项的条目添加到现有文件中。

以下代码显示了要添加的内容。请注意,apps键的值是一个只有一个条目的数组-app clip的app标识符。

{
    "appclips": {
        "apps": ["ABCED12345.com.example.MyApp.Clip"]
    }
    ...
} 

最后,在Xcode中,将您网站的域添加到应用程序和应用程序片段的“关联的域权利”中。

配置并响应调用
系统使用您在App Store Connect中配置的URL来启动您的应用程序剪辑。 因此,识别启动应用程序剪辑的URL,在启动时对其进行响应并在App Store Connect中注册它们对于创建应用程序剪辑至关重要。

发布您的应用程序剪辑
应用片段需要相应的应用。 准备发布应用剪辑时,请将其作为应用存档的一部分提交。 请注意,您的应用程序剪辑在提交进行审查后必须通过App Store审查过程。

推荐

基础文章推荐

经典教程推荐

上新

技术源码推荐

推荐文章

CoreData篇

Combine篇

TextField篇

JSON文件篇


一篇文章系列

技术交流

QQ:3365059189
SwiftUI技术交流QQ群:518696470

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342