What's new in App Clips
System & Services 进阶 20m

App Clips 新特性:更大容量、默认链接与跨应用调用

What's new in App Clips

2023年6月5日

在 Apple 官方观看视频

一句话判断

App Clips 在 iOS 17 获得了三项实质更新:数字调用的包大小上限提升到 50MB、无需自建网站的默认链接机制、以及从任意应用内直接调起 App Clip 的能力——这三件事组合起来让 App Clip 的实用门槛大幅降低。

这场 Session 讲了什么

iOS 17 为 App Clips 带来了三个新功能。

新的包大小上限。物理调用(NFC 标签、App Clip Code、QR 码)仍然保持 15MB 的限制(iOS 16 引入),因为用户可能在蜂窝网络环境下使用。但数字调用(通过消息、Safari、Spotlight 等触发的场景)的上限提升到了 50MB。这意味着游戏试玩、在线点餐等需要更丰富内容的场景有更大的发挥空间。如果你之前为了控制体积而在运行时下载资源,现在可以考虑把更多资源直接打包进去,提升首次启动体验。iOS 15 及更早版本仍然是 10MB。

Default App Clip Links。以往要让 App Clip 通过 URL 调起,你需要在自有网站上托管 Apple App Site Association 文件和关联的元数据。现在,当你在 App Store Connect 发布 App Clip 时,苹果会自动生成 appclip.apple.com 域名下的链接,格式为 https://appclip.apple.com/id?p=com.example.app.Clip。你可以在链接后附加查询参数传递自定义数据,App Clip 启动后通过解析 NSUserActivitywebpageURL 获取参数。这项功能从 iOS 16.4 开始支持。

从应用内调起 App Clip。iOS 17 允许任何应用通过链接直接调起 App Clip,无需经过 Safari 或 Safari View Controller 中转。你可以用 LPMetadataProvider 获取链接元数据,展示在 LPLinkView 中供用户点击。如果是默认 App Clip 链接,更简单——SwiftUI 中直接用 Link 视图,UIKit 中用 UIApplication.shared.open(url) 即可。

值得深挖的点

50MB 的战略意义:之前 10-15MB 的限制是很多开发者放弃 App Clip 的原因。50MB 足以放入一个小型游戏的完整试玩关卡、一套完整的外卖菜单和支付流程、或一个功能齐全的产品 AR 预览。但要注意物理调用仍然是 15MB,如果你的 App Clip 同时支持两种调用方式,需要控制在 15MB 以内或者为两种场景构建不同的体验。

Default App Clip Links 降低了分发门槛:不再需要维护网站和 AASA 文件就能让 App Clip 通过链接分享。这对没有 Web 基础设施的团队来说是大利好。URL 参数解析也很简洁——标准的 NSURLComponents + queryItems

跨应用调用的生态价值:想象一下,即时通讯应用里用户分享一个点餐链接,收件人点击后直接弹出 App Clip 完成点餐,全程不需要跳转浏览器。这种体验可以推动更多场景采用 App Clip。

代码片段

在 App Clip 中解析默认链接的参数:

// SwiftUI 视图中解析 URL 参数
ContentView(parameters: $parameters)
    .onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { userActivity in
        guard let inputURL = userActivity.webpageURL else { return }
        let components = NSURLComponents(url: inputURL, resolvingAgainstBaseURL: true)
        guard let queryItems = components?.queryItems else { return }
        // 将查询参数绑定到视图状态
        self.parameters = queryItems
    }

从 SwiftUI 应用中直接调起 App Clip:

var body: some View {
    let appClipURL = URL(string: "https://appclip.apple.com/id?p=com.example.app.Clip")!
    Link("打开应用剪辑", destination: appClipURL)
}

最佳实践

  • 评估你的 App Clip 体积,如果超过 15MB,确保只通过数字调用方式分发
  • 优先使用 Default App Clip Links 减少配置成本,自定义域名方案留给需要深度品牌化的场景
  • URL 参数要设计得简洁——App Clip 启动速度是关键体验指标,复杂的参数解析会拖慢首屏
  • 使用 LPMetadataProvider 获取链接预览时注意异步处理,不要阻塞主线程
  • 测试时验证低网速环境下 50MB App Clip 的下载和安装体验

还有什么值得关注

  • 50MB 上限未来是否会进一步提升
  • Default App Clip Links 的统计分析能力——能否追踪不同渠道的调用量
  • App Clip 与 App 之间的数据共享在 iOS 17 是否有改进
  • App Clip Code 的生成和扫描体验更新
WWDC 2023