
什么是App Clips
简单理解,就是苹果官方的“小程序”。 官方定义,App Clips是一个轻量级的、原生的、不需要管理和清理的App。
苹果为什么要做App Clips
App Store内生态不再繁荣
2008年7月11日,iPhone 3G发行并首次支持了App Store,自此开启了iOS平台上移动应用的时代。但是自15年至今,App Store上的移动应用数量增长率不断走低,甚至在18-19年出现了负增长现象(和苹果清理僵尸应用的策略有关)。


被Web App蚕食的低频场景和长尾需求
基于特定低频场景的需求,比如在餐馆点餐付费,长久以来并没有被苹果重视。类似的还有一些业务导向的小公司,没有实力和能力研发App来抓住移动互联网的风口,在微信小程序(或其他小程序)诞生之前,唯一的出路就是找个外包低成本、快速的开发一款Web App。 但是Web App的安全性、用户体验都还存在问题,因此这次Clips主要针对这种场景给出了优化。

微信小程序对市场的教育
Clips从想法到技术方案多少都受到了这股来自东方的神秘力量的影响。毕竟小程序这个概念源自微信,也发扬自微信。 在国内,微信小程序可以说无处不在:餐馆点餐、租赁车辆、包括最近的高频应用“健康宝”/"健康码"。用户也逐渐习惯了低频需求用小程序而非下载App。

Clips的顶层设计

Clips的入口
根据WWDC 2020相关Session可以得知,Clips的入口包括:NFC、QR Code、Cips Code、自家部分App、Siri、Safari的Smart Banner,还有Notification。我将这几个入口总结为:场景化入口、自有流量入口、对外扩展接口三类。
场景化入口
场景化入口包括NFC、QR Code 和Clips Code。 在WWDC2020有这么一个场景,用户在停车场通过NFC直接呼叫Clips支付停车费,将车开走。值得注意的是,呼出Clips是在手机锁屏状态下进行的。

除了NFC之外,还支持通过相机扫描普通QR Code(就是二维码)和未来的Clips Code来进入Clips的方式。 指的一提的是,苹果公布的这个Clips Code长得跟微信小程序码。。。一言难尽。。。 有种同样用了摩斯密码,其中一种做成了射线,另一种做成了环。。。

自有流量入口
其实Clips出来后很多人抱怨苹果不支持App内部跳Clips,这个是不准确的。其实苹果自家的Siri,地图及iMessage都支持打开Clips。

目前还没有资料表明,苹果会在第三方App开放打开Clips。
对外扩展入口 Smart Banner
目前对外扩展入口仅限于Smart Banner。对于Smart Banner不太了解的同学可以参考这里 如果想要启动Clips,需要将Smart Banner配置成如下格式


之前的Smart Banner必须要经过AppStore下载完成才能完成转化,操作步骤多(如果没登录AppStore账号的话还得登录一下),等待时间长,转化率不高; 集成了App Clips的Smart Banner可以在Clips层完成用户转化,等待时间短,用完即走,转化率高。如果用户想要体验完整版应用,还能自行完成到App的转化。提高了Smart Banner的利用率。
Clips的数据解析
WWDC内资料显示,Clips会对应一个特有的URL,通过访问对应网站JSON信息来判断是否可以打开Clips,以及解析哪些字段,来对打开的Clips做变量传递。这种交互逻辑适合于非Safari的Smart-Banner打开Clips,也称之为Default App Clip Experience。
要完成数据解析,需要同时在对应Web Server和App Clips分别做配置

Web Server
需要在网站的 apple-app-site-association file中,添加如下代码段:
{
"appclips":{
"apps":["ABCDE12345.example.fruta.Cilp"]
},
...
}
如果之前有支持过Universal Link,那这个文件一定不陌生。
App Clips侧
在工程项目中需要添加对应domain信息

func respondTo(_ activity: NSUserActivity?) {
// Guard against faulty data.
guard activity != nil else { return }
guard activity!.activityType != NSUserActivityTypeBrowsingWeb else { return }
guard let incomingURL = activity?.webpageURL else { return }
guard let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else { return }
}
这里,为了更好的支持Clips,apple-app-site-association file本次还做了升级,支持订阅变量,具体可以参考WWDC2020:What's new in Universal Links
{
"details":[{
"appIDs":["ABCDE12345.com.example.resturant"],
"components":[{"/":"/$(lang)_$(regin)/$(food)/"}]
}]
}
Clips的开发
Clips的开发可以说对iOS开发者来说非常友好,可以和平时开发App一样有UIView,可以弹ViewController,基本是和开发Native App相比没有什么区别(除了个别库不支持之外,比如CallKit)
-
首先打开已有工程,新建一个名为App Clips的target

-
之后将工程中需要放到Clips里的文件添加到新建的Clips的target中,例如

-
最后,像修改主工程一样修改Clips Target下的入口文件即可,例如AppDelegate等。
-
如果想要和主工程共享Asset,可以通过建立一个Asset文件,勾选之前建立的Clips Target即可

Clips -> App
在Clips中会存在入口,如果用户想要体验完全的功能,可以通过入口进入App Store对应App的下载流程,完成转化。

shared data container而不是普通的standard data container,因为正常来说,Clips生命周期之后,数据会随之消失。

shared data container技术后Clips数据迁移步骤如下
- Clips的数据记录在"Group container"中。
- 通过Clips下载App,Clips消失,但是数据仍然在"Group Container"中
- 打开App,完成数据从“Group Container”到App的迁移,“Group Container”被清理并移除。
App Clips的预加载和缓存机制
首先,官方对于App Clips的大小要求是"Thinning后不超过10MB"。这个也是为了实现所谓的“Instance App”概念。 其次,App Clips的启动会先弹出Clips卡片,包含了Clips的图片信息,标题,描述,AppStore地址等信息。在此卡片的弹出后即启动下载流程,使得用户点击Open的时候看起来像是“立刻打开”。

App Clips的技术优缺点(vs 微信小程序)
优点
- 操作路径更短 NFC场景下,用户可以在锁屏下激活App Clips,打开小程序,使用Apple Pay完成下单,操作更便捷。 可以认为今年开始Apple强制要求App 引入Apple Pay是在为App Clips铺路,为了达到极致体验。
- 用户体验更好 相信不少iOS微信小程序用户都遇到过小程序崩溃需要重新打开的情景。毕竟微信小程序的资源受限于微信App本身的资源大小。相比之下App Clips是亲儿子,这种限制即便有,未来也会在系统机制上进行照顾,相应的体验和未来的扩展性会好一些。
- 场景会更丰富 相信未来Cilps的场景会不局限于App,流程和体验优化到一定程度会向手表、眼镜和其它IoT设备扩展。而微信小程序对这些设备的扩展取决于苹果是否能开放相应的API。
- 开发友好 基于上一个章节的介绍,开发一个App Clips程序几乎不需要太多成本
缺点
- 普及速度慢 这里的普及速度既包含App Clips应用本身的普及速度,也包括线下场景的推广。可以想象,Clips Code需要内置一个NFC芯片,成本跟微信小程序一个贴纸比会高很多。而且微信小程序在双端交互和体验一致,而App Clips只在iOS平台上。
- 极致体验需要打通Apple账户,包括Sign In with Apple和Apple Pay。 相信在国内,这两项技术还是微信或者支付宝的天下,苹果很难撼动。
- 苹果设备在国内的市场占有率不高,会阻碍App Clips的推广。
结论
从目前App Clips开放的接口和交互流程上来看,在手机App这个战场上,App Clips想要撼动微信小程序的地位基本不可能。
展望
对现有iOS App主流架构方式的影响
传统iOS App是以ViewController为中心的页面组织结构,未来为了更好的适配App Clips,需要更新为基于Router的页面打开/展示架构,统一基于URL来进行传参,和现有App Clips的参数解析逻辑相一致。
未来App Clips的使用场景
苹果技术向来是步步为营。这次App Clips的技术分别以之前的Universal Link、Sign with Apple和Apple Pay为基础。那App Clips又会成为哪些技术的基础?
Apple Watch

Apple Glass

参考资料
- WWDC2020:Explore app clips
- WWDC2020:Create app clips for other businesses
- WWDC2020:Configure and link your app clips
- Creating an App Clip
- Responding to Invocations
- WWDC2020:What's new in Universal Links
欢迎关注我的公众号:尼莫萌
扫码关注:
