Cloudkit 公共数据库错误:“不允许写入操作”
Posted
技术标签:
【中文标题】Cloudkit 公共数据库错误:“不允许写入操作”【英文标题】:Cloudkit Public Database Error: "WRITE operation not permitted" 【发布时间】:2018-03-23 21:18:22 【问题描述】:我目前的 CloudKit 公共数据库有问题。
有时我在修改记录时收到错误消息: 权限失败”(10/2007);服务器消息=“不允许写操作”; 错误代码为 10 permissionFailure
如果我的记录修改次数很少,我几乎永远不会收到错误,但是一旦我有更多的修改(每小时 3000 次以上),错误就会变得异常频繁,并且超过 20% 的请求会导致此错误。 这让我明白了一个事实,即我的代码一定没问题,因为该错误只会随着 CloudKit 活动的增加而发生。
当然,我(以及该应用的所有用户)都已登录 iCloud 并激活了 iCloud Drive。每个人的 WRITE 权限也被激活。
此外,请求速率也远低于每秒 40 个请求的限制(当许多用户处于活动状态时,最大值约为每秒 3 个请求)。
有人有想法吗?
【问题讨论】:
【参考方案1】:同样的问题;不知道原因是什么,但发生在从一个 iCloud 帐户切换到另一个帐户的测试场景中。可能某些 CloudKit 状态被锁定在前一个帐户的令牌上。
通过(再次)退出 iCloud 并再次登录来解决。我将向用户实施“如果此问题仍然存在,请退出...登录...”的反馈。我希望它会非常罕见。
【讨论】:
撤回:它没有保持固定。 :(【参考方案2】:我出现这个问题的原因:从一个 iCloud 帐户切换到另一个没有正确清除本地缓存(包括 Core Data 中的元数据),导致新帐户偶尔尝试更新属于前一个的云记录用户。
这种情况的解决方法取决于应用程序。在我的情况下,需要一个全新的切换(确认切换帐户后清除所有数据)。其他应用程序可能需要将数据克隆到新创建的云记录中(即使用正确的创建者/所有者元数据)。
【讨论】:
以上是关于Cloudkit 公共数据库错误:“不允许写入操作”的主要内容,如果未能解决你的问题,请参考以下文章
CloudKit“订阅重复”错误 - 获取 SubscriptionId
CloudKit fetchRecordWithID 错误:“获取资产失败”
CloudKit iOS 10 错误:帐户无权访问 CloudKit 帐户