App Clips 新特性
What's new in App Clips
2022年6月6日
一句话判断
App Clips 在 iOS 16 迎来一波实用更新:体积上限提升到 15MB、新增诊断工具、支持 CloudKit 只读访问和 Keychain 迁移,如果你在做 App Clips,这些改进直接降低开发成本。
这场 Session 讲了什么
Session 由 Charles Ying 主讲,围绕四个新特性展开:App Clips 体积限制从 10MB 提升到 15MB(需 iOS 16);新增 App Clip Diagnostics 诊断工具,帮助排查 Universal Link 配置问题;App Clips 现在可以读取 CloudKit 公共数据库;以及 Keychain 数据在用户安装完整 App 时自动迁移。
此外还介绍了 App Store Connect 的 App Clip Experiences Web API,支持批量自动化创建和管理高级 App Clip 体验。
值得深挖的点
CloudKit 只读访问的设计取舍。 App Clips 可以读 CloudKit 公共数据库,但不能写。也不能使用 Cloud Documents 和 Key-Value Store。这个限制是有意为之的——App Clips 的承诺是”不用了就删除”,写入能力会导致数据残留。这个设计思路值得在做 App Clip 功能规划时参考。
Keychain 迁移让认证流程更自然。 之前从 App Clip 到完整 App 的认证令牌迁移需要通过 App Group 容器中转。现在直接把敏感信息存到 Keychain,用户安装完整 App 后自动迁移过来。代码完全一样,用 SecItemAdd 存、用 SecItemCopyMatching 取。
诊断工具直击痛点。 在开发者设置里有 App Clip Diagnostics,输入 URL 就能检查 Universal Link 配置是否正确,能定位 Safari 横幅不显示、跳转到网页而非 App Clip 等常见问题。每个诊断结果都附有文档链接。这个工具能省掉大量配置调试的时间。
代码片段
// 从 App Clip 读取 CloudKit 公共数据库
import CloudKit
let container = CKContainer.default()
let publicDatabase = container.publicCloudDatabase
let record = try await publicDatabase.record(for: CKRecord.ID(recordName: "menuItem_001"))
// 读取记录数据并展示
// 在 App Clip 和完整 App 中共享 Keychain 数据
import Security
// 存储登录信息
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "authToken",
kSecAttrLabel as String: "SavedByAppClip", // 标记来源,方便完整 App 识别
kSecValueData as String: token.data(using: .utf8)!
]
SecItemAdd(query as CFDictionary, nil)
// 读取登录信息
let fetchQuery: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "authToken"
]
var result: AnyObject?
SecItemCopyMatching(fetchQuery as CFDictionary, &result)
最佳实践
- 设置最低版本为 iOS 16 以利用 15MB 上限。 需要兼容 iOS 15 及更早版本的 App Clips 仍需控制在 10MB 以内。
- 始终优化 App Clip 体积。 网络速度不是万能的,用户可能在不稳定网络环境下使用 App Clip。启动后仍可通过 On-Demand Resources 下载额外资源。
- 使用 App Clip Diagnostics 验证 Universal Link 配置。 在开发者设置中开启(需连接 Xcode),输入 URL 即可检查。
- App Clip Experiences API 适合批量管理。 如果你有大量地理位置绑定的 App Clip 体验,用 API 自动化创建比手动在 App Store Connect 操作高效得多。
还有什么值得关注
- App Clip Experiences API 支持设置 Maps 位置关联,包括 Maps business place name、map action 和坐标
- Keychain 迁移不支持共享 Keychain Groups 和 iCloud Keychain,这确保了 App Clip 数据不会在删除后残留
- 推荐搭配观看 “Build light and fast App Clips” 了解优化技巧
- Toast 的案例值得参考——他们利用已有的收据上的 QR 码触发 App Clip,无需额外部署硬件