You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 26 Beta 1中通过CKShare加入共享iCloud CKRecord时无法获取所有者名称的问题咨询

iOS 26 Beta 1中通过CKShare加入共享iCloud CKRecord时无法获取所有者名称的问题咨询

我来梳理下这个问题的可能方向和应对思路,帮你提前做好预案:

1. 优先排查Beta版本的潜在Bug

目前iOS 26处于Beta 1阶段,这类无官方文档/WWDC说明的行为变更大概率是未完善的Bug。毕竟如果是隐私相关的 intentional 变更,Apple通常会在Beta发布前配套更新文档或在WWDC中明确提及。

建议你先通过Apple的Feedback Assistant提交Bug报告,附上:

  • 清晰的复现步骤(对比iOS 25及更早版本的正常表现)
  • 共享创建和所有者名称获取的核心代码片段
  • 设备信息与Beta版本号

同时密切关注后续Beta版本的更新日志,很多隐私相关的行为调整会在后续Beta中修复或补充官方说明。

2. 若这是Intentional变更的应对方案

如果后续Beta确认这是官方有意的隐私调整,你可以尝试以下几个方向:

(1)探索新API的可能性

你提到的CKShareRequestAccessOperation虽然文档稀疏,但从命名和功能定位来看,它应该是用于处理共享访问请求时的权限协商。可以尝试在接收者请求共享访问时,通过这个操作附加对所有者身份可见性的请求;或者在所有者创建CKShare时,主动配置允许自身身份被共享参与者发现。

基于API命名推测的尝试代码逻辑:

let accessOperation = CKShareRequestAccessOperation(shareMetadata: shareMetadata)
accessOperation.accessGrantedBlock = { accessGranted, error in
    if accessGranted {
        // 尝试再次获取所有者身份信息
        let ownerIdentity = shareMetadata.ownerUserIdentity
        // 检查是否能获取到nameComponents
    }
}
// 执行操作
CKContainer.default().add(accessOperation)

(2)自定义字段存储所有者标识(临时过渡预案)

作为应急方案,可以在创建共享的CKRecord中添加一个可选的自定义字段(比如ownerDisplayName),在所有者创建共享时,主动询问是否允许存储其显示名称,并仅在用户明确同意后写入该字段。

需要注意:

  • 必须清晰告知用户该字段的用途(用于共享参与者识别所有者)
  • 提供用户随时修改/删除该字段的入口
  • 处理用户更新名称后的同步问题(比如所有者修改名称后,主动更新所有共享记录的该字段)

(3)检查CKShareParticipant的权限配置

创建CKShare时,除了设置publicPermissions = .readWrite,可以留意CKShareParticipant的属性是否有新增的隐私控制选项。比如是否可以在添加参与者时,通过participantPermission或新的身份可见性开关,请求所有者身份对参与者可见。不过当前CKShareParticipant的公开属性中暂无相关配置,需要持续关注后续文档更新。

3. 官方资源跟进建议

  • Apple Developer Forums:前往CloudKit板块发帖询问,很多开发者会分享相同问题的探索结果,甚至Apple工程师会直接回复。
  • CloudKit文档更新:每周查看一次Apple Developer网站的CloudKit API参考,新API的文档会在Beta周期内逐步完善。
  • Apple Developer Support:如果这个问题严重影响你的App核心功能,可以提交技术支持请求,直接咨询Apple工程师关于该行为变更的原因和官方解决方案。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 09:28:06