iOS15.x已有共享记录时UICloudSharingController不显示Add People如何解决
iOS 15+ UICloudSharingController「添加人员」选项丢失临时解决方案
问题说明
- iOS 14.x及更低版本中,已存在共享记录时,
UICloudSharingController的人员表单第一部分最后一行会显示「添加人员」选项 - iOS 15.x至15.2 beta版本中,该选项在所有第三方应用中统一消失,仅苹果官方自带应用不受影响,现象和编译使用的Xcode版本无关
- 对应现象截图:


临时解决方案
目前经开发者验证的可行方案有两类,可根据业务场景选择:
方案1:自定义添加入口,主动调用CloudKit接口
在应用内额外新增「添加共享人员」按钮,点击后自行实现人员信息输入、权限选择逻辑,直接调用CloudKit接口添加参与者,不依赖系统共享控制器的内置选项:
func addShareParticipant(share: CKShare, userEmail: String) async throws { let lookupInfo = CKUserIdentity.LookupInfo(emailAddress: userEmail) let userIdentity = CKUserIdentity(lookupInfo: lookupInfo) let newParticipant = CKShare.Participant( userIdentity: userIdentity, permission: .readWrite, acceptanceStatus: .pending ) share.addParticipant(newParticipant) try await CKContainer.default().privateCloudDatabase.modifyRecords( saving: [share], deleting: [] ) // 操作完成后可重新弹出UICloudSharingController刷新列表 }
该方案适配性最强,不受系统版本变更影响,就是需要额外开发简单的交互UI
方案2:显式配置CKShare权限参数
初始化CKShare时显式配置权限属性,大概率可以触发系统控制器重新显示「添加人员」选项:
let share = CKShare(rootRecord: yourRootRecord) // 显式关闭公开访问权限 share.publicPermission = .none // 显式开启参与者添加新用户的权限 share.allowParticipantsToAddParticipants = true // 后续正常初始化UICloudSharingController使用即可
该方案适配成本极低,但是仅对部分iOS 15小版本有效,无法覆盖100%用户
以上方案均为官方修复前的临时绕路方案,待苹果推送系统更新修复该问题后,建议切回系统原生默认逻辑。
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

