LESSON 47 / 576 分钟

多人共享、CKShare 与跨平台取舍

“我的两台设备同步”与“把记录分享给另一个人”是两种不同能力。先决定谁拥有数据、谁可以编辑。

用你的前端经验理解

它类似协作文档的成员与权限模型。邀请链接只是入口,不能把它当成已经完成授权的凭证或把私有记录变成公开记录。

为什么需要它

跨设备同步和多人共享不是同一功能。前者通常是一个用户访问自己的数据,后者需要所有者、参与者、邀请、权限和撤销。用户分享一个收藏夹时,你还要决定分享范围是否包含文章正文、附件和之后新增的内容,不能只考虑当前屏幕上的列表。

它是怎样工作的

CKShare 用于组织 CloudKit 共享关系,参与者接受分享后按权限访问相应内容。邀请链接不是应被永久视作公开权限的普通网址,所有者撤销、参与者移除和记录删除都要影响界面。若产品必须让 Web、Android 和自有业务身份深度参与,应评估 CloudKit 的可用接口及限制,必要时用自建后端承担协作模型。

把关键概念连起来

1

多人共享

CloudKit 使用 CKShare 等共享机制描述所有者、参与者与权限;接收邀请、撤销共享和离开共享都需要流程。接收方通过 shared database 访问适用记录。

2

选对技术层

若需要多人协作,先检查目标系统与持久化框架的实际支持。不要把 SwiftData 的个人自动同步等同于现成 CKShare 集成;必要时考虑 CloudKit 或 Core Data 对应方案。

3

平台取舍

CloudKit JS / Web Services 提供部分 Web 接入能力,但有独立身份与权限配置。需要 Android、自有账号、复杂服务端业务或统一权限时,可比较自建后端,不强行套入 iCloud。

与朋友共用旅行清单

发起者创建共享并决定是否可编辑,朋友接受后才能访问。撤销共享时,客户端处理不可访问状态并移除相应入口,而不是不断重试请求假定为网络异常。

共享一个家庭阅读收藏夹

  1. 明确所有者与只读/可编辑参与者,选择记录组织方式,保证共享范围不意外包括私人收藏。
  2. 接受邀请后把共享数据与个人数据清楚区分,编辑动作按实际权限判断,不能只靠隐藏按钮。
  3. 所有者撤销共享时清理访问入口与不应继续展示的缓存,停止对已无权限内容的上传重试。

这里需要你亲自判断

停止共享不等于撤回别人此前导出的文件;iCloud 同步、App Groups 进程间共享和业务多人协作不是同一种共享。

做一个小练习

为共享阅读清单定义 owner、read-only、read-write 三种角色,列出撤销共享后离线设备应如何恢复状态。

  1. 列出邀请未接受、已接受只读、可编辑、已撤销四种界面状态。
  2. 解释换一台同账号设备与邀请另一个人为何需要不同模型。
展开参考思路与验收标准

共享设计先解决谁能读写什么,再选择 SDK 调用。第三方业务账号体系与 iCloud 身份的对应关系需要显式设计,不能假设邮箱相同就自动得到同一共享权限。

用户 A 想与用户 B 共同编辑,能只开 A 的 private database 自动同步吗?

继续查阅官方资料
Apple Developer 官方资料

本课聚焦核心认知。具体 API、系统要求与发布政策,以当前官方文档和工程验证为准。

答对理解题后即可标记完成