简介
appclip是一个用户需要时才由系统触发下载的native小程序
appclip关联宿主App,但没有宿主app也可以运行
Appclip experience是打开链接后用户看到弹起的小卡片,是开启appClip的入口,初次下载后可以通过用户界面上的对应icon再次打开。一个appclip可以有多个appclip experience
用户使用时通过各种途径比如NFC或扫码获取到url,Appclip experience会拉起一个小卡片,用户点击Open后触发appclip下载并启动,通过NSUserActivity获取到url,在appclip里路由到指定页面。
唤起applicp入口:NFC、二维码、AppclipCode、苹果地图上的链接、Siri附近推荐、Safari链接、短信里的链接(微信链接应该需要跳转到safari打开)
Appclip Code:
appclip的一个优势是可以将宿主app入口比较深的模块立即暴露给用户在最需要的时机打开。对于宿主app,启动入口更多了;对于功能模块来说,在用户手机上有自己的固定入口,曝光机会更多,用户触达路径更短了
开发appclip
其实和开发一个app类似,尽量重用宿主app里已有代码
app工程里新增一个appclip target,asset和文件加到appclip target,添加相关依赖库
不支持的库: CallKit, CareKit, CloudKit, HealthKit, HomeKit, ResearchKit, SensorKit, and Speech
Link appclip三部曲
1. 配置web服务器和appclip
跟添加webcredential自动填充密码的步骤类似,webServer根路径要放一个文件,key为“appclip”,value加上appclip的bundle id。
从NSUserActivity拿到url,解析后跳转对应页面,如果用户已安装宿主app,系统会打开宿主app,所以宿主里也需要保证有相应跳转逻辑。可参考https://developer.apple.com/videos/play/wwdc2019/717
添加test url 测试appclip
2. 配置appclip卡片体验和appstore
可参考
相关限制
如果想在safari和message以外入口打开,比如NFC,一定要设置下面这个高级体验
一个appclip可以设置n个url,每个url对应一个appclip experience,有自己的icon;也可以通过prefix后加各种query来拓展一个appclip experience,在appclip代码里路由到不同业务逻辑
相关设置,可以把弹窗和真实地址关联
3. 配置smart appclip banner
也就是网页里拉起appclip experience的入口,添加网页标签即可,仅限Safari
default和advanced experience
总结
Appclip是一个即用即走的native小程序,专门用于某个特定使用场景,需要和app一起提交审核
和宿主app互斥,如果用户已安装宿主app,则不会触发appclip的下载,而是直接由appclip experience打开宿主app;如果安装appclip后再安装宿主app,appclip会自动卸载
由于appclip触发时机就是用户最需要的时候,appclip应该尽可能小,来保证快速下载和迅速启动,所以大小有10MB限制,但可以开启appclip后下载其他需要的资源
支持applePay、notification、登录等几乎所有宿主app能力,用户隐私(比如健康数据)和一些系统库受限
解析二维码或苹果码得到url,对应一个appclip experience,在appstore配置好后,系统解析到对应url,会弹出对应appclip experience,用户点击open后,自动下载app clip的二进制文件运行
appclip下载后,会在用户手机界面保留appclip experience图标,可以再次打开,appclip几天不用会卸载,所以只能作为cache存储数据
可以通过SKOverLay引导用户下载宿主app
可以和app共享数据、权限,安装app后用户隐私权限自动迁移到宿主App,放在group container里的用户数据会自动迁移到app,group container外的数据会随app clip卸载丢失
Reference
demo:https://developer.apple.com/documentation/swiftui/fruta_building_a_feature-rich_app_with_swiftui
https://developer.apple.com/videos/play/wwdc2020/10174
https://developer.apple.com/videos/play/wwdc2020/10146
https://developer.apple.com/videos/play/wwdc2020/10118
https://developer.apple.com/videos/play/wwdc2020/10172
https://developer.apple.com/documentation/app_clips/creating_an_app_clip
https://developer.apple.com/documentation/app_clips/developing_a_great_app_clip