苹果在 WWDC 2020 发布了 App Clips,让没有安装应用的用户也能够体验到你的应用的部分功能,这与现有的微信、支付宝小程序在设计理念上非常类似,不过在设计上也是稍微有其独特之处。另外从技术层面上看,App Clips 依托的是原生平台,因此使用的技术也是完全不同的,本文主要针对 App Clips 的特点和设计进行介绍。
App Clips 是一个轻量级版本的应用,主要目的是让用户无论在何时何地都可以根据不同场景使用到其中对应部分的功能。但和小程序不同的是,他不是一个独立应用程序,App Clips 的使用需要依托特定的场景,而且一次打开只能体验到其中一部分的功能。比如说一个咖啡店的应用,可能会包含点单、收藏饮品、获取优惠券等不同功能,然而一个咖啡店的 App Clip 只应该包含点单的功能。对这个场景苹果提出一种设想:用户想买咖啡,当他走到咖啡店附近时,系统根据定位信息弹出一个关于这家店 Siri 建议,那么用户点击建议就可以打开这家咖啡店的 App Clip,然后可以直接在上面下单买咖啡,这样用户不用下载咖啡店的 App 也可以快速便捷地买到咖啡。
可以看到,App Clips
的使用需要依托特定的场景,由用户去触发这些场景的条件(Invocation),从而打开 App Clips
提供特定服务。打开 App Clips
借助的是一个 URL,苹果将其定义为 App Clip Experience
,这类 URL 会由系统通过如 App Clip Card
这样的形式呈现给用户,用户点击 Open 时系统就会打开 App 或者下载对应 App Clips
进行处理。可以理解成 App 的新的入口,和之前推出的 Universal Link
的处理过程比较类似,关键区别是不需要使用 Apple app site assionciations
文件,而可以直接在 App Store Connect
上注册。这些 URL 本身也是字符串,因此可以编码成物理标签,如:
NFC 标签
二维码
地图店铺标签
附近建议(如上面的咖啡店案例,可以在 App Store Connect
上注册)
另外,为了更方便的使用 App Clips
,苹果结合了 NFC 和二维码的优点设计了 App Clip Code
,让用户一看就知道这是一个 App Clip。与微信小程序码不同,他可以支持触碰和扫描。关于 App Clip Code
的生成工具,苹果会在今年内推出。
用户打开 App Clip Experience
时,如果已经安装了 App,那么就会打开 App 来处理,如果没有安装,系统会下载对应的 App Clips
来执行本次处理需要的功能。App Clips
与普通 App 很相似,但App Clips
只需要包含应用的核心功能,用于处理 App Clip Experiences
即可。
从开发层面看,App Clips
依托的是原生的环境,可以使用的和 App 一样的 UI 框架,也就是说可以直接使用 UIKit
或者 SwiftUI
,另外 iOS SDK 中多数框架也是可以共用的,因此绝大多数代码可以直接与 App 共用一份,在审核时,App Clips
只需要单独编译打包,然后和 App 一起提交即可,这比重头开发一个小程序的成本低很多。
在用户设备上,App Clips
是由系统单独下载,与 App 相互独立,用户通过 App Clip Experiences
启动应用的时候,App 或者 App Clip
会收到一个 NSUserActivity
,用于处理不同的功能请求,类似 Universal links,因此针对不同功能可以设置不同的 App Clip Experiences
来作为入口。
虽然 App Clips
可以共用 iOS 的系统库,但是相比原生 App 还是有一些限制:
App Clip
中获取敏感数据会一直返回未授权,包括以下数据:
App Clip
不允许要求授权定位追踪,不过可以请求 When In Use authorization
权限,第二天 04:00 会自动重置权限;一般来说设计一个 App 时,我们会在顶层的控制器放置所有功能的入口,比如设置 tab bar 来切换不同页面。 App Clips
可以包含很多功能,但是不需要像 App 一样放置所有功能的入口,不同功能是通过 App Clip Experience
的 URL 作为入口,一次只需要使用其中之一,因此 App Clips
整个交互的流程是一个流线型、线性的过程。
App Clips
用户交互的一个大致的流程:
App Clip Experience
;App Clip
,那么系统会删除 App Clip
和数据;当用户使用过 App Clips
后下载了你的 App,系统会直接将相机、蓝牙和麦克风权限迁移到你的 App。如果 App Clips
中需要迁移的数据,可以将数据放到一个共享的 App Group Container
进行数据迁移。然后系统会删掉 App Clip 本身。
另外关于 App Clips
中使用到的用户数据还需要注意:
App Clips
,其内容本身、用户数据、keychain 数据都会被删除;App Clips
不包含在 iOS 备份中;Universal Links
、支持打开的文档类型、URL scheme 等在 App Clips
中都是不可用的,因此作为登录回调是不支持的,登录功能需要使用 ASWebAuthenticationSession
;App Clips
的作用是在用户未安装应用时,根据用户需求快速呈现应用中的功能,借用苹果的原话:
App Clips are designed for speed.
App Clips
的应用体验是一个流线型、快捷、目标明确、即时体验的过程,从其特性上看,App Clips
也适用于实体店、线下活动等线下应用场景,可以提供不错的用户体验。另外对于现有的 App 来说,开发者可以很轻松的将功能迁移到 App Clips
上,相信正式推出后会得到广泛的应用。