UICloudSharingController结合Core Data与CloudKit时添加参与者失败的技术问询
Core Data + CloudKit 结合 UICloudSharingController 添加参与者异常问题解析
今年夏季苹果发布了一款SwiftUI示例应用,演示如何通过Core Data、CloudKit和UICloudSharingController实现iCloud用户间的数据共享,但在Core Data与CloudKit结合的场景下,使用UICloudSharingController添加更多参与者时出现异常。
最小复现示例(MRE)
- 可直接使用苹果官方的上述示例应用
- RayW的同类型示例应用存在相同问题
- 纯CloudKit的示例应用无此异常
复现步骤
- 创建新共享
- 通过UICloudSharingController管理共享
- 选择“添加更多参与者”
- 通过短信或其他服务共享,首次尝试成功,后续尝试失败
预期结果
可通过UICloudSharingController借助短信、邮件等平台添加新参与者,共享链接在所有设备上正常显示。
实际现象
- iOS 16+系统:通过短信共享会触发Collaboration框架,弹出“发生错误,无法启动协作”提示;触发该错误后,邮件等其他平台也无法生成共享链接;首次成功共享的链接在接收设备上显示异常。
- iOS 15系统:UICloudSharingController会直接关闭弹窗,无提示信息。
控制台日志
首次出现问题时会输出如下日志,后续尝试不再生成该日志:
CoreDataCloudKitShare[3672:1242159] systemSharingUIDidSaveShareBlock received error: <CKError 0x28314d8c0: "Server Record Changed" (14/2004); server message = "client oplock error updating record"; op = 134D57570A63DF3A; uuid = 8F070F8B-0AC0-4FFE-A52D-154BCBF3196C; container ID = “containerID>
其中containerID为对应CKContainer的ID。
问题进展与解决方案
- 该问题已提交苹果反馈(编号FB11623246),并在苹果开发者论坛进行提问,确认是已知高优先级回归Bug。
- iOS 16.4 beta 2及后续版本修复了UICloudSharingController的核心问题,但新增了附件添加错误;经与苹果官方沟通后,所有问题已完全解决,苹果同时更新了官方示例应用。
内容的提问来源于stack exchange,提问作者blu-Fox
相关产品推荐
相关产品推荐

