OBJC创建一个APP CLIP的流程

前言

在 Xcode 工程中,你可以为你的 App 添加一个 app clip target, 利用 Xcode ,app clip 可以与你的 app 共享代码与资源,并可以编译,调试,运行在真机或者模拟器环境。但是,在实际使用过程中,开发者必须在自己的服务器上做好验证 app clip 的有效性的手段。

使用 App clip 的场景

image.png

增强用户体验

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。


create.png

2.项目配置

  1. 添加关联的域名 例appclips:example.com


    domain.png

2. CLIP的版本号一定要跟APP的版本号一致

  1. 提前配置APPCLIP的条件编译
    在 app clip 和完整应用之间共享代码时,可能会遇到无法在 app clip 中使用某些代码的情况。在这些情况下,请设置 Preprocessor Macros ,在其中可以声明排除代码的条件。


    preprocessor macros.png
  1. 服务器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文件

  1. 添加公共代码文件夹和图片资源文件夹
    为 App clip 编写代码逻辑和添加 asset 资源与正常开发 iOS App 没有什么区别,但是为了工程的可维护性,App clip 与完整的应用程序应该尽可能多的分享代码:
  • 如果你创建了一个新的 app, 并且带有 app clip 功能, 那么开发请遵循基于代码模块化的最佳实践,例如, 创建可重复使用的组件。
  • 如果为现有的 app 添加 app clip,建议先花点时间将代码重构为模块化,与 app clip 共享,避免代码重复
  • 在完整的应用程序与 app clip 中,Assets 资源共享


    common assets.png
  1. 区分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
  1. 从App引用需要的公共.m文件


    image.png
  1. Cocoa Pods的Podfile 文件
    4.1 发现CLIP不能用动态库(待求证)需注释use_frameworks!
    4.2 配置CLIP的target
    4.3 配置项目的configurations


    configurations.png

4.本地测试APP CLIP

  1. 配置预览卡片
    在真正的启动App Clip之前,首先会弹出预览卡片。在提交App Clip时,是跟宿主App一起打包上传到App Store Connect上的,App Clip的预览卡片配置也是在App Store Connect上完成,提供给开发者自由配置的地方并不多,包括3个方面:


    app store connect.png

    a.配置一个头图
    b.配置副标题并提供描述文案
    c.配置交互按钮

  2. 配置_XCAppClipURL


    appclipurl.png

3. 删除设备的APP,通过二维码扫一扫打开CLIP

  1. 当APP CLIP被调起后,需要通过回调拿到URL信息
    使用系统相机扫描器扫描,将会弹出 App Clip Card
sao.png

5.审核和发布

准备发布 app clip 时,请将其作为 app archive 的一部分提交。请注意,必须通过App Store 审核,才能发布。

参考:
Creating an App Clip
Developing a Great App Clip

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350