最近在研究 Apple 的 CloudKit ,基本上通读了相关的文档:CloudKit,CloudKit Web Service。
CloudKit 基本上可以认为是一个支持存储用户私人数据的 NoSQL 数据库,其本身的设计保证了即使是 App 的开发者也无法访问用户的私人数据,可以有效的保护用户的隐私。这使得其非常适用于私人数据的同步,比如记账类,日记类的 App 。
但我的关注点在它的另外一项功能,也就是分享Shared Records,使得可以在用户可控的情况下分享指定的资源(虽然这个分享实操起来比较复杂)。
我的计划是通过分享功能创建一个私密的小圈子社交( Apple 的文档说一个记录只能分享最多 100 人),用户之间可以通过创建分享记录,来查看彼此的信息。
这整个过程,都可以仅基于 Apple 的 CloudKit API 完成!虽然实现起来很复杂,但是开发者可以无需提供自己的网络服务,好处有几个:
- 解除用户对开发者的隐私疑虑,开发者看不到用户的数据 [可以通过开源,或者测试 App 是否链接 Apple 之外的外源服务来审计]
- 解除用户对服务持续性的疑虑,因为不使用 CloudKit 之外的任何外源服务,所以原则上只要 Apple 不倒闭,或者不关闭 CloudKit ,用户就可以继续使用。
问题:
- Apple 生态的封闭性,很少看到在 Apple 生态之外使用 CloudKit 的案例,但是读过CloudKit Web Service文档之后,我认为 CloudKit Web Service 提供的能力是与原生 Apple 平台等价的,可以借助 CloudKit Web Service 实现 Web Apple 甚至是其他平台的原生 App 。要求是用户至少有一个 Apple ID 。
- 国内的特殊生态,众所周知,Apple iCloud 在中国是独立的由云上贵州运营的,不可避免的就会有各种问题,我目前测试的是通过 CloudKit Web Service 的授权登录国内账号返回的 token 不可用,但是通过设备 Native 获取的 token (CKFetchWebAuthTokenOperation)又可用;也有人说分享功能在国内不可用(/t/1035315);更别说国区账号和外区账号是否可以 share 更是需要测试。
抛开问题不谈,我觉得理想状态下,这非常适合实现一个类似私密朋友圈的社交软件,三五好友,或者家人之间建立一个小的圈子,分享些照片视频之类的,无需担心被平台窥视(当然,你是你相信 Apple 不会作恶窥视你的信息的前提下)。
大家对这个有什么建议,或者有类似想法或者使用过 CloudKit 踩过什么坑的都可以来分享一下。