前言
在 Xcode 工程中,你可以为你的 App 添加一个 app clip target, 利用 Xcode ,app clip 可以与你的 app 共享代码与资源,并可以编译,调试,运行在真机或者模拟器环境。但是,在实际使用过程中,开发者必须在自己的服务器上做好验证 app clip 的有效性的手段。
使用 App clip 的场景
增强用户体验
App clip 不会显示在主屏幕上,并且用户无法以管理 App 的方式对其进行管理。相反,一段时间不活动后,系统会从设备中删除 App clip 。因此,为您的 App clip 提供出色的用户体验非常重要。
App clip 应该避免复杂的界面元素(如标签栏或复杂的表单),从而提供线性,集中的用户体验。在要求用户执行复杂的任务的时候,应该减少使用复杂性的技术。例如,在 App clip 中使用 Apple Pay 来支付费用,或者利用 Sign in with Apple 来避免复杂的用户登录注册。
Keep Your App Clip Small
App clip 的大小必须不超过10 MB,才能提供即时启动。如果可能,将您的应用剪辑保持在此限制以下。
App clip 的可用框架
App clip 可以使用SwiftUI和UIKit,并且可以访问与完整应用程序相同的框架。但是,以下框架不适用于 App clip :CallKit,CareKit,CloudKit,HealthKit,HomeKit,ResearchKit,SensorKit 和 Speech。
在 App clip 使用这些框架中的任何一个都不会导致编译时错误,但是它们的 API 返回的值会指示运行时不可用,空数据或错误代码。例如,当您从应用程序剪辑中调用 HealthKit 的 isHealthDataAvailable()时,它会返回false。
用户隐私
App clip 可以使用 SKOverlay 或 SKStoreProductViewController 展示广告并推荐其他应用。但是,始终在 App clip 中启用“限制应用程序跟踪”,以保护用户隐私并防止用户跨应用程序和 App clip 进行跟踪。
App clip 无法通过 AppTrackingTransparency 请求授权来跟踪用户,并且 name 和 identifierForVendor 都返回一个空字符串。此外,App clip 无法执行后台活动,例如使用 URLSession 进行后台网络连接或在不使用 App clip 时保持蓝牙连接。App clip 也无法请求连续的位置信息访问权限。但是,他们可能会请求 When In Use authorization,该授权会在第二天凌晨4:00自动重置。
为了保护用户数据,App clip 无法访问:
- 运动和健身数据
- 苹果音乐与媒体
- 来自通讯录,文件,消息,提醒和照片等应用程序的数据
除了与自身相对应的应用程序外,App clip 无法与任何其他应用程序共享数据。
创建一个APP CLIP的流程
1.添加一个App Clip的Target
首先你得闲有一个创建好的工程。在菜单栏通过路径File->New->Target->App Clip,创建一个Target。
2.项目配置
-
添加关联的域名 例appclips:example.com
2. CLIP的版本号一定要跟APP的版本号一致
-
提前配置APPCLIP的条件编译
在 app clip 和完整应用之间共享代码时,可能会遇到无法在 app clip 中使用某些代码的情况。在这些情况下,请设置 Preprocessor Macros ,在其中可以声明排除代码的条件。
- 服务器Apple App Site Association配置APPCLIP的键值
在系统弹出 app clip 或允许 app clip 调用之前,系统会验证 app clip 的配置和调用的URL。如果无法执行验证,则不会显示app clip,也不会启动。为了使系统能够验证您的 app clip,您需要对你的 Web 服务器和 Xcode 项目进行配置:
- 为你的服务器添加一个 Apple App Site Association 文件
- 在 Apple App Site Association 文件中添加一个键值对,key 为 appclips,例如:
{
"appclips": {
"apps": ["ABCED12345.com.example.MyApp.Clip"]
}
...
}
3.代码编写和引用APP文件
- 添加公共代码文件夹和图片资源文件夹
为 App clip 编写代码逻辑和添加 asset 资源与正常开发 iOS App 没有什么区别,但是为了工程的可维护性,App clip 与完整的应用程序应该尽可能多的分享代码:
- 如果你创建了一个新的 app, 并且带有 app clip 功能, 那么开发请遵循基于代码模块化的最佳实践,例如, 创建可重复使用的组件。
- 如果为现有的 app 添加 app clip,建议先花点时间将代码重构为模块化,与 app clip 共享,避免代码重复
-
在完整的应用程序与 app clip 中,Assets 资源共享
- 区分APP和CLIP环境
#if !APPCLIP
// Code you don't want to use in your app clip.
NSLog(@"不是app clip");
#else
// Code your app clip may access.
NSLog(@"是app clip");
#endif
-
从App引用需要的公共.m文件
-
Cocoa Pods的Podfile 文件
4.1 发现CLIP不能用动态库(待求证)需注释use_frameworks!
4.2 配置CLIP的target
4.3 配置项目的configurations
4.本地测试APP CLIP
-
配置预览卡片
在真正的启动App Clip之前,首先会弹出预览卡片。在提交App Clip时,是跟宿主App一起打包上传到App Store Connect上的,App Clip的预览卡片配置也是在App Store Connect上完成,提供给开发者自由配置的地方并不多,包括3个方面:
a.配置一个头图
b.配置副标题并提供描述文案
c.配置交互按钮 -
配置_XCAppClipURL
3. 删除设备的APP,通过二维码扫一扫打开CLIP
- 当APP CLIP被调起后,需要通过回调拿到URL信息
使用系统相机扫描器扫描,将会弹出 App Clip Card
5.审核和发布
准备发布 app clip 时,请将其作为 app archive 的一部分提交。请注意,必须通过App Store 审核,才能发布。