苹果小程序App Clips技术解析和展望

2020-07-02 10:32:43 浏览数 (1)

北京时间2020年6月23日,苹果在一年一度的WWDC上正式宣布了苹果官方“小程序” App Clips。本文带你来了解App Clips,分析其优缺点,并对前景做展望。

什么是App Clips

简单理解,就是苹果官方的“小程序”。 官方定义,App Clips是一个轻量级的、原生的、不需要管理和清理的App。

苹果为什么要做App Clips

App Store内生态不再繁荣

2008年7月11日,iPhone 3G发行并首次支持了App Store,自此开启了iOS平台上移动应用的时代。但是自15年至今,App Store上的移动应用数量增长率不断走低,甚至在18-19年出现了负增长现象(和苹果清理僵尸应用的策略有关)。

数据来源于www.statista.co

从图中可以看出,从15年App数量增长达21.41%之后,增长率一路走低,截止至最新数据增长率不足1%,iOS App市场繁荣不再,苹果生态略显疲态,未来会对相关收入造成影响。 下一次App Store,有可能是5G时代下的“重网络型”App的爆发,例如AR、VR应用。但至少不是现在,苹果不会对这种颓势坐视不管。

image

被Web App蚕食的低频场景和长尾需求

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

image

可以感受一下,京东H5版本和京东Native版本,体验差的还是挺多的。

微信小程序对市场的教育

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

image

Clips的顶层设计

image

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是在手机锁屏状态下进行的。

image

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

image

这些入口有明显的场景特性,多用于在线下需要使用时触发并操作。

自有流量入口

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

image

其实这三个App并非随便选出来的:苹果地图App代表O2O场景、iMessage代表社交场景、Siri代表了一种未来的主流交互(非UI-Based的交互)。 Notification也算是一种唤起方式,不过这个属于Clips内部唤起逻辑之一。

目前还没有资料表明,苹果会在第三方App开放打开Clips。

对外扩展入口 Smart Banner

目前对外扩展入口仅限于Smart Banner。对于Smart Banner不太了解的同学可以参考这里 如果想要启动Clips,需要将Smart Banner配置成如下格式

image

加入了Clips之后,Smart Banner的使用场景会更加丰富。加入App Clips之后,Smart Banner的链路转化效率会有明显提升,对比如下:

image

之前的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分别做配置

image

Web Server

需要在网站的 apple-app-site-association file中,添加如下代码段:

代码语言:javascript复制
{
    "appclips":{
        "apps":["ABCDE12345.example.fruta.Cilp"]
    },
    ...
}

如果之前有支持过Universal Link,那这个文件一定不陌生。

App Clips侧

在工程项目中需要添加对应domain信息

image

处理NSUserActivity,获取调用链接。 可以通过webPageUrl属性进获取。实例代码:

代码语言:javascript复制
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

代码语言:javascript复制
{
    "details":[{
        "appIDs":["ABCDE12345.com.example.resturant"],
"components":[{"/":"/$(lang)_$(regin)/$(food)/"}]
    }]
}
Clips的开发

Clips的开发可以说对iOS开发者来说非常友好,可以和平时开发App一样有UIView,可以弹ViewController,基本是和开发Native App相比没有什么区别(除了个别库不支持之外,比如CallKit)

  • 首先打开已有工程,新建一个名为App Clips的target

image

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

image

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

image

Clips -> App

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

image

值得一提的是,如果想完成从Clips到App的转化,且不丢失任何数据,需要在Clips中使用shared data container而不是普通的standard data container,因为正常来说,Clips生命周期之后,数据会随之消失。

image

使用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的时候看起来像是“立刻打开”。

image

最后,App Clips使用后,对应内存和数据会进行清理(不使用Shared data container的情况下)。 但是官方还提到,如果某个App Cilps被反复打开,其数据的有效期会相应延长,并有可能永远不删除(像普通App一样)。

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

image

Apple Watch目前越做越大,可展示的信息越来越多,自Apple Watch Series3代以来已经独立于iPhone做数据下载和展示,且有非常强的移动属性,在Apple Watch上使用App Clips会变得非常便捷。 个人觉得目前在地图上集成App Clips可能就是在为这个场景铺路。 Apple Watch靠近NFC -> 启动 Clips -> 选择项目 -> Apple Pay付款,一切行云流水。

Apple Glass

image

据说Apple会在2021到2022年内退出Apple Glass,会带来新的应用交互。但是可以肯定一点的是,数据传输会是难点,因此大体量的App不适合初代的Apple Glass,这时候只有10MB大小的Cilps就很适合Glass。而且通过Glass访问Clips Code更加快捷(甚至都不需要打开相机应用或者NFC靠近,如果传感器可以识别Clips Code的话),到时候的交互就会变成: Apple Glass 识别 Clips Code -> 显示App Clips -> 基于Siri完成下单、登录、Apple Pay付款 一样简单便捷。 目前的Siri入口很可能就是在为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

0 人点赞