SwiftUI 学习 Creating an App Clip with Xcode

  • 用Xcode创建一个App Clip
    在Xcode项目中添加一个App剪辑目标,并在App剪辑和相应的完整应用程序之间共享代码

添加一个App Clip目标

应用剪辑需要一个相应的完整应用程序,该应用程序剪辑至少提供相同的功能;你对你的完整应用和你的应用剪辑使用相同的Xcode项目。如果你开始一个新的应用程序项目,首先用Xcode创建一个新的iOS项目。如果你想在现有的iOS应用程序中添加一个应用程序剪辑,打开它的Xcode项目。然后,添加一个应用剪辑目标到Xcode项目:
1.使用App Clip模板添加一个新目标。
2.选择产品名称,为App Clip选择适用选项,然后单击Finish。

rendered2x-1598484589.png

3.Xcode为你选择的选项创建所有需要的文件,并为你的App Clip添加一个目标:

  • 用于构建和运行App Clip及其测试的方案;
  • 一个名为[On Demand Install Capable]的新功能添加了com.apple.developer. On Demand - Install - Capable权限
  • The [Parent Application Identifiers Entitlement]
  • App Clip的应用标识符,使用完整的应用程序的应用标识符作为前缀,后面跟着一个字符串
    例如,如果你的完整应用程序的应用标识符是$(AppIdentifierPrefix)com.example.MyApp,应用剪辑的应用标识符是$(AppIdentifierPrefix)com.example.MyApp.Clip。

简书美元符号如果无法解析,前面添加回车符。

  • _XCAppClipURL环境变量作为App剪辑方案的一部分,允许您调试调用。
  • 支持与完整应用程序相同的设备,不包括macOS。

此外,Xcode为app目标创建了一个新的构建阶段,该阶段将app Clip嵌入到app中。
在向App剪辑目标添加代码之前,请在模拟器或设备上运行App Clip。此时,App Clip显示了一个空白的屏幕,因为您还没有向App Clip目标添加任何代码和资产。

添加Code和Assets

App Clip使用与完整应用相同的框架,向App Clip的目标添加Code或Assets就像对其他目标一样。创建新的File和Assets,或使用现有的File和Assets,并将它们作为成员添加到App Clip的目标。为了确保项目的可维护性,整个app和app Clip都应该尽可能多地共享代码:

  • 如果您创建了一个新的应用程序,在创建App Clip时要记住,并遵循促进模块化代码库的最佳实践。例如,创建可重用组件,将其打包为Swift Packages,并在完整的应用程序和App Clip中使用这些包。有关更多信息,请参见[Organizing Your Code with Local Packages]。
  • 如果你在现有的应用程序中添加了一个App Clip,那就留出时间重构应用程序的代码库,使之模块化,并在App Clip和整个应用程序之间共享代码,避免代码重复。
  • 将共享Assets添加到新的资产目录中,并在完整的应用程序和App Clip中使用该目录。有关更多信息,请参见About Asset catalogs

保持你的App Clip 包的大小

应用程序剪辑必须很小-不超过10mb的未压缩应用剪辑-以立即启动。如果可能,保持你的App Clip低于这个限制。

为了测量你的应用剪辑的大小,为你的应用剪辑创建一个应用大小报告:

  • 在Xcode中,存档App Clip对应的App,打开管理器窗口,选择存档,点击分发App。
  • 导出App Clip作为一个特设或开发构建与应用细化和重建从位码启用。

你导出的App Clip的输出文件夹也包含了它的大小报告:一个名为App细化大小报告.txt的文件。打开文本文件,注意你的App Clip未压缩的大小,调整你的项目,将其未压缩的大小保持在10mb以下。
有关测量应用程序大小的更多信息,请参见Reducing Your App’s Size

使用活动编译条件

在很多情况下,添加一个App Clip到你的应用程序是一个很好的机会来重构你的应用程序的代码,使之模块化和可重用。大多数功能和框架可用到你的完整应用程序是可用到你的App Clip。然而,你可能会遇到一些情况,你不能在app Clip中使用你的应用程序代码,并且为app和app剪辑代码创建单独的模块是不可行的。在这些情况下,可以利用活动编译条件构建设置,在该设置中可以声明排除代码的条件。

original-1592600160.png

开始导航到你的App Clip目标的构建设置,并为活动编译条件的构建设置创建一个新值;例如,APPCLIP。然后,在共享代码中添加一个签入,在需要的时候,排除你不想在App Clip中使用的代码。
下面的代码检查添加到活动编译条件构建设置的APPCLIP值。

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

添加关联域权利

1.用户启动应用程序片段通过调用URL调用应用程序片段.
或者如果用户安装应用程序替换应用程序片段,充分应用。
发射机制利用Associated Domains Entitlement
的权利——一种权利你可能已经熟悉你的应用程序是否支持Handoff
universal links

2.设计和配置你的App Clip的启动体验是一个重要的任务,快速启动是使用App Clip的关键。然而,无论你选择支持哪个调用,使用哪个调用url,你必须添加Associated Domains Entitlement
权利到应用程序和应用剪辑目标:

  • 在Xcode中打开项目;然后,在您的项目设置中,启用关联域功能来添加关联域权利
  • 对于启动App Clip或完整应用程序的每个URL,使用以下模式将其域添加到关联域功能:appclips:。例如,添加appclips:example.com

配置并响应调用

要启动一个应用程序剪辑,用户需要执行一个调用.
例如:
1.通过扫描一个NFC标签或一个可视代码。
2.在代码中,响应调用以及系统在启动时传递给App Clip或full App的调用URL。你不需要添加代码来扫描NFC标签、可视代码等等。(比如web调用方式)

但是,在将App Clip 分发给测试人员或提供给用户之前,必须对服务器进行更改。此外,还需要考虑希望支持哪些调用。有关更多信息,请参见Configuring Your App Clip’s Launch Experience.。

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