距苹果公司通过线上形式召开年度开发者大会(WWDC20)已经过去三个月了,大家期待的新iPhone发布也从9月16推迟到了北京时间 2020 年 10 月 14 日凌晨 1 点。简短总结新款iPhone的一些特点:
1.支持5G2.5nm工艺A14仿生3.暗摄性能提升4.超瓷晶面板抗摔5.全系OLED XDR6.没有120HZ高刷新率7.没有配备充电头和EarPods8.数据线Type-C 转 Lighting
不过本文的重点在苹果推出的小程序Clip。新款iPhone姗姗来迟不过苹果的两个拳头产品iOS14和基于iOS14的Clip应用生态却已经发布。WWDC20发布内容主要是一些软件系统方面的改进比如iOS14(待到下次讲解)。但与往年不同的是,本次大会公布了Clip应用被媒体称为苹果的小程序,到底两者是不是一回事呢?
苹果的Clip是不是小程序?
苹果的官方文档有这样一句话(轻 App 是 App 的轻巧版,可让您快速执行任务,无需下载并安装完整的 App。您可以在 Safari 浏览器、“地图”、“信息”或者现实生活中租借单车、付停车费或点菜时发现轻 App。)你会发现App 的轻巧版即Clip本质上就是一个原生iOS应用,功能特点和小程序比较像小巧灵活随用随删(很难说苹果没有借鉴小程序随用随走的理念)。
但是个人觉得基于系统的Clip优势更大,毕竟当用户使用小程序时首先要打开微信,而Clip则越过了这一步。另外在技术层面两者完全不是一个概念,与正常的iOS App应用的区别在于以下几点:
1.安装包要限制在10M以内
2.不能单独发布必须关联一个母App
3.Clip的功能须局限于主App功能的集合
4.无法访问隐私相关的数据,比如照片、通讯录、运动健身等相关数据
5.当触发Clip运行后没有图标显示在手机上,无法与普通App一样进行管理
6.免申请通知和定位权限,通知在8小时内有效
7.目前in-house证书不上架App Store的不能创建Clip相关证书
8.一段时间不用后会被系统自动清除
官网给出的Clip触发的几个场景:
在物理位置扫描 NFC 标签或二维码
选择 Siri 提供的基于位置的建议,例如定位
在 Map 应用中点击链接
在网站上点击一个智能的 App Banner
点击在 iMessage 应用中共享的链接
这里虽然NFC触发很快捷方便,而且现在很多的智能设备都支持此功能,但是对于商家来说相较于NFC设备贴一张二维码成本很低几乎可以忽略不计。所以二维码唤醒Clip以后应该还是主流,除非苹果线下大力推广与Apple设备相关的NFC的近场通信设备。
Apple Clip的开发流程是和app extension或者watch app非常像的,同一个project下不同的Target并且同时支持支持 UIKit 和 SwiftUI两种框架,基于两种框架下的UI设计或者再借助StoryBoard原生能力的开发非常快捷方便。除了以上还有例如ApplePay Apple登录等基础框架可用。但是Clip自身易被唤起的特点与普通App开发不同的是要完成下面几种必要的开发流程,这些开发配置主要是用于唤起Clip所做的支持,首先就是关联域与universal link相似。
当创建一个Clip应用时默认Capability要支持下面两个功能,关联的域名必须支持https
然后在 server 的 App Site Association (通常是在网站 .well-known 下的 apple-app-site-association 文件) 中添加这个域名对应的 appclips 条目:
{ "appclips": { "apps": [“你的TeamID.母APP的BundleID.Clip"] }}
Safari访问这个会去拿配置的ID去Appstore拿已经发布的Clip应用
以上会提供一个链接 URL 配置在域名文件下的 JSON决定 App clip card 上显示什么数据
触发时显示的卡片是在App Store Connect中设置标题文本和按钮文本。下图的轻App即Clip。设置的标题图像即是唤醒Clip之后所显示的名片图像。这里需注意的是默认轻 App 体验只能通过 Safari 浏览器和“信息”调用,高级轻 App 体验则可以通过轻 App 码(内嵌网址和 NFC 标签)、二维码以及“地图”中的地点卡片调用。
具体的启动流程如下所示:
最后讲一讲小编在开发中遇到的问题和注意点:
1.开发Clip时可以和主App之间共享代码和资源,在主App项目下新建Clip Target. Xcode在主App项目要分享代码中右侧菜单勾选对应的Target Membership。
2.Clip应用支持的设备类型必须和母App所支持的设备类型保持一致,如图Clip支持iphone和iPad 则主App也必须支持这两种类型,否则真机测试或者打包会报错
关于Clip详细讲解可以去开发者官网浏览,如果大家有更多关于Clip的知识点或者对本篇文章有什么疑问欢迎在评论区留言。
关于作者:热河,普元移动端开发工程师,互联网技术爱好者,专注于iOS开发。目前参与Mobile 8.0项目的开发,主要接触RN技术的应用,黏合前端代码与iOS底层之间的交互。