新增框架
ARKit
iOS 11 引入了新的 ARKit 框架,让您轻松创建无可比拟的 iPhone 和 iPad 增强现实体验。 通过将数字对象和信息与您周围的环境相融合,ARKit 为 App 解开了屏幕之缚,带领着它们跨越屏幕的界限,让它们以全新的方式与现实世界交流互动。
通过摄像头看到虚拟物体在现实场景上的叠加
ARKit 框架提供了两种 AR 技术,一种是基于3D场景(SceneKit)实现的增强现实,一种是基于2D场景(SpriteKit)实现的增强现实。
要想显示 AR 效果,必须要依赖于苹果的游戏引擎框架(3D引擎 SceneKit,2D引擎 SpriteKit),主要原因是游戏引擎才可以加载物体模型。
虽然ARKit框架中视图对象继承于 UIView,但是由于目前 ARKit 框架本身只包含相机追踪,不能直接加载物体模型,所以只能依赖于游戏引擎加载 ARKit。
另外需要说明的一点是,ARKit 虽然是 iOS11 新出的框架,但并不是所有的 iOS11 系统都可以使用,而是必须要是处理器 A9 及以上才能够使用,苹果从 iPhone 6S 开始使用 A9 处理器,也就是 iPhone 6 及以前的机型无法使用 ARKit。
可用性
没有 ARKit 当然也可以做 AR,Pokémon Go 就是最好的例证。ARKit 只是降低了做 AR 的门槛。
ARKit 的使用场景比较局限,必须 iOS 11 系统,而且处理器必须是 A9 及以上。如果你需要长时间大量支持 iOS 8、9、10 的系统,以及 iPhone 6S 之前的系统,你可能需要重新考虑你的 AR 方案了。
由于要涉及苹果的游戏引擎框架(3D 引擎 SceneKit,2D引擎 SpriteKit),学习曲线较为陡峭,需要开发进行长时间的知识储备。
如果仅仅针对某些推广活动而使用 ARKit,由于推广活动的时效短,ARKit 的学习成本大,总体上性价比较低,不推荐。
如果整个 App 是基于 AR 的服务功能,那么这将会是一个不错的 idea,例如基于摄像头的“大众点评”,我们可以直接通过摄像头展示的现实世界,叠加一些信息显示商家的评分和地理位置。
对于跨平台的游戏而言,由于兼容性问题,ARKit 也不是一个很好的解决方案。如果只涉及苹果平台,并且你已经使用了 SceneKit 或者 SpriteKit,这个时候你想加入 AR 功能,那么恭喜你,ARKit 将会是最佳选择。
PDFKit
iOS 11 后苹果在 iOS 平台开放了 PDFKit SDK,这是一个在 MacOS 上已经长期存在的框架,但却在 iOS 上姗姗来迟。可以使用这个框架显示和操作 pdf 文件,你可以使用 PDFKit 实现显示 pdf 文档、显示缩略图、展开大纲和搜索文字等功能。
可用性
非常实用的框架,虽然 WebView 也能阅览 pdf,但显然原生的体验是最佳的,当然如果考虑到 iOS 8、9、10 的兼容性,可能现在还不到换的时候。
Core ML & Vision
苹果在 iOS 5 里引入了 NSLinguisticTagger 来分析自然语言。iOS 8 出了 Metal,提供了对设备 GPU 的底层访问。
去年,苹果在 Accelerate 框架添加了 Basic Neural Network Subroutines (BNNS),使开发者可以构建用于推理(不是训练)的神经网络。
今年,苹果给了我们 Core ML 和 Vision!
Core ML 让我们更容易在 App 中使用训练过的模型。
Vision 让我们轻松访问苹果的模型,用于面部检测、面部特征点、文字、矩形、条形码和物体。
总结一下,如果你已经有了一个训练好的模型,你可以对图像进行场景识别。
通过 Core ML 和 Vision 识别图像所描绘的场景
可用性
想玩好 Core ML 和 Vision,学习曲线还是非常陡峭的。如何构建和训练自己的模型是一个很大的课题,不是一朝一夕能够完成的。基于照片或者相机的应用可以考虑使用 Core ML 和 Vision,甚至可以结合 ARKit,分析基现实场景,并将虚拟信息叠加在现实场景上。
IdentityLookup
可以自己开发一个 App Extension 来拦截系统 SMS 和 MMS 的信息。系统的信息 App 在接到未知的人的短信时,会询问所有开启的过滤扩展,如果扩展表示该消息应当被拦截,那么这则信息将不会传递给你。
可用性
一些运营商或者辅助性质的 App 可能会使用到这个功能。
DeviceCheck
通过使用 DeviceCheck 你能够在某种程度上追踪到这个手机使用了你开发 App 的情况(即使这个 App 被卸载,或者机器被刷机)。DeviceCheck 允许你通过你的服务器与 Apple 服务器通讯,并为单个设备设置两个 bit 的数据(没错,就是 2bit,00 01 10 11 四种可能)。这样即使 App 被卸载重装,被刷机,App后台照样可以拿到之前设置的状态。
可用性
对于新用户活动可以有效防刷,但是并不能取代 deviceID,因为这个 token 是一次性的。
整个流程大致如下:
App 通过调用苹果的 API 获得一个 token,然后把这个通过传递给后台服务器,告诉后台,我要领优惠券。
后台收到 App 领优惠券的请求之后,拿着这个 token 先去苹果后台查询这台设备的状态。
后台查询到状态之后根据这个 2bit 数据以及对应的 timestamp 决定要不要发放优惠券。
如果要发优惠券,发送完优惠券之后,后台拿着 token 去更新苹果后台的2bit数据。
FileProvider & FileProviderUI
FileProvider 实现了一个云文件的扩展,让你可以获取用户设备上或者云端的文件。
FileProviderUI 为 FileProvider 提供一套类似 Files App 的界面。
可用性
相信会成为以后文档相关类 App 的标配。
Core NFC
NFC(Near Field Communication)即近距离无线通讯技术。Core NFC 主要用于检测 NFC 标签, 并且读取其中包含的 NDEF 数据。
要注意的是:
只能同时开启一个 session
App 需要在前台,退入后台失效
session 最多存活60秒,超时必须重启新 session
需要配置 info.plist,开启 NFC 读取权限
仅支持 iPhone 7 和 7P 以上包含 NFC 模块的机型