iOS 11 in developer's eye [1]

394 阅读5分钟
原文链接: zhuanlan.zhihu.com

## PDFKit

没什么好说的, 包名说明了一切。以前并不是没有 PDF 支持,只是隐藏在深深的深处没有办法用,而且好像只能一页一页绘制。现在不但有了入口,而且是自带文档级支持的:上页下页,跳转,放大缩小,打印和背景色,什么都有。只靠系统库也能做一个能用的 PDF reader 了。

<img data-rawwidth="1007" data-rawheight="233" src="https://pic4.zhimg.com/v2-04fe8f4c90ec9acccaba3fc46c79f5ab_b.png" class="origin_image zh-lightbox-thumb" width="1007" data-original="https://pic4.zhimg.com/v2-04fe8f4c90ec9acccaba3fc46c79f5ab_r.png">

文档管理 app 面临最大困境,为了拯救废厂的危机,九名肥宅程序员决定成为偶像!

## ARKit (AR), Vision (CV), CoreML (ML)

别人说得太多了,不太想提了(实际上是没仔细看)。提供了一波 GoogLeNet 的模型给开发者用,大概能碾压个百度识图。但是游戏以外的应用场景……唔……well……

这两天我思考了一下,AR/VR 类应用属于那种看起来很美,但是不一定会火的东西。因为实际上,肥宅(人类)是很懒的。这里懒的定义是,能少做物理运动就少做物理运动。

王者农药很火,正是因为比 LOL 省脑子和胳膊,省下打开电脑的麻烦。Wii 出了那么多年,也打不过 Playstation; Kinect 现在成为了实验室神器。基本上来说,趴在被窝里只用两个拇指玩的游戏可以说是懒的极致了,因而也最火。画质?操控感?打击感?这些东西只对 hardcore 玩家有意义。

我觉得在可见的未来内,体感类的游戏都不会很火。

脑补了一种模式:人躺在床上,有一个朝天的投影仪投影 4k 分辨率到天花板上。操控方式是手机上显示一个触摸板,或者虚拟摇杆,手需要一直接触屏幕但是不需要看。在投影画面上背景是特制版农药,前景是两个半透明圆表示两个拇指触摸的地方。UI 大概是这样:

<img data-rawwidth="743" data-rawheight="555" src="https://pic4.zhimg.com/v2-9f7da93fa85e574be8974b5c4ccc4593_b.png" class="origin_image zh-lightbox-thumb" width="743" data-original="https://pic4.zhimg.com/v2-9f7da93fa85e574be8974b5c4ccc4593_r.png">注意到两个白色圆环,换成两个半透明实心圆,明度高一点饱和度低一点。

注意到两个白色圆环,换成两个半透明实心圆,明度高一点饱和度低一点。

或许会有小学生从此一卧不起数十天。

版权申明:如果任何公司使用了上述创意开发游戏模式,我有权利收到至少一杯咖啡。打款方式请私信@王瑞扬 联系。

## CoreNFC

这个是非常有价值的东西。从水果7开始的机器都带了 NFC 芯片,但是除了 Apple Pay 以外,普通开发者并不能接触到,对我们来说和土豆没什么区别。土豆至少还能吃。

现在终于开放了 API. 不过基于一贯的风格,并没有开放完全。根据文档,现在 NFC 只能读取而不能刷。根据 API 读法是这样的:

  1. 新建一个 NFCNDEFReaderSession 等她准备好: func readerSessionDidBecomeActive(NFCReaderSession)
  2. 从 Delegate 里面读,一次能读到一个数组 [NFCNDEFMessage],或者读到个 error.
  3. 一个 Message 里面是 [NFCNDEFPayload], 一个Payload 就是数据了。

很简单, very apple, very foundation.

但是并不能自己作为 NFC 卡用,所以想刷 iPhone 坐公交或者校园卡工卡乃至当银行卡就算了。一时还真想不出一个 iPhone as NFC reader 的用途……

## DeviceCheck

号外号外,苹果免费为每个 App 提供云服务!容量:每用户……2……bit……

iOS 11 新功能,一个……怎么说呢,初衷是好的但是十分搞笑的功能。

水果致力于保护用户隐私,所以不希望提供用户设备 UUID, 因为提供了以后可以相当精确地描绘出用户的各种行为。

Cook: 这种事情只能我做,凭什么给你?用户隐私由我来守护!

前几代产品的解决方案是,提供一个 per-App 的 UUID,也就是说,提供一个对 (Device, App) 唯一的字符串。这样,每个 App 厂商自己可以记录用户设备信息,而不同厂商(App)之间的UUID 不同,无法对应。但是狂躁症的苹果觉得这样还不够,因为各种钻空子的信息论 paper 和无良厂商想要搞事情还是办得到。于是水果进一步地加强了用户隐私防御。新的方法是:

  1. 找 DeviceCheck 这个包要一个临时的 token,这个 token 可以认为是随机数,很短就失效的
  2. token -> 厂商服务器
  3. 厂商服务器把 token -> Apple 服务器
  4. Apple 服务器 -> 厂商一定的用户信息

一定的用户信息是多少呢?苹果:我们的 response payload 有两个 field, 类型分别是 boolean 和 boolean.

<img data-rawwidth="86" data-rawheight="84" src="https://pic1.zhimg.com/v2-420bce194c0c1adee24f3b0bea7b93f4_b.png" class="content_image" width="86">

哈哈哈你看看你又被水果忽悠了.jpg

这可不是我乱说的,你看人家官方文档:

<img data-rawwidth="738" data-rawheight="258" src="https://pic2.zhimg.com/v2-2731b0b036ace887ef59f4dc14a4eca1_b.png" class="origin_image zh-lightbox-thumb" width="738" data-original="https://pic2.zhimg.com/v2-2731b0b036ace887ef59f4dc14a4eca1_r.png">这个 description 真是……清楚。

这个 description 真是……清楚。

苹果的意思是让你去存储这个用户的类似是否使用优惠码的信息。容量少也可以理解,如果给了比如 32 byte, 就可以储存成一个 unique ID 和厂商自己的服务器对应,就失去了隐私保护了。但是这个……2bit……唔……<img data-rawwidth="75" data-rawheight="69" src="https://pic4.zhimg.com/v2-fa1e3c5395ae8508fffaff8faeafa427_b.png" class="content_image" width="75">

第一观感就这些吧。还有一大堆新玩意,但是都没什么意思,不说了。我们明年再见(逃