当发生 CloudKit 错误时,客户端是否应该继续重新发送?

When CloudKit error occurs should client keep resending?

当客户端获得 CKErrorRequestRateLimited 时,客户端应在 RequestRateLimited 秒后再次执行操作。但是当你得到一些不同的错误类型时你会怎么做,即 CKErrorZoneBusy。你如何处理这个案子?我尝试每 10 秒递归地重新发送消息,但它似乎没有帮助,因为在出​​错后我每 10 秒返回相同的错误消息:

\(error.localizedDescription) \(error.code) \(error.userInfo)"

Zone busy 23 Optional([NSDebugDescription: CKInternalErrorDomain: 2029, NSUnderlyingError: <CKError 0x15899950: "Unknown Error" (2029)>, NSLocalizedDescription: Zone busy])

我应该尝试 2-3 次,然后相应地中断和重置持久存储/GUI 吗?但是之后用户会重试,情况还是一样。

不知道有没有关系,我已经上传了好几条里面有资产/图片的记录,短时间内很多,而且很快一个接一个。第一条消息成功,但客户端开始收到错误。

在这种情况下应该采取什么程序?

正如您在文档中看到的那样: https://developer.apple.com/library/ios/documentation/CloudKit/Reference/CloudKit_constants/#//apple_ref/c/tdef/CKErrorCode

区域忙 服务器太忙,无法处理此区域操作。几秒钟后重试该操作。如果您再次遇到此错误,请以指数方式增加每次后续重试的延迟时间,以最大程度地减少服务器对该区域的争用。

看来您已经按照应有的方式处理了它。

如何在您的应用中处理此问题取决于您。如果 CloudKit 保存失败,这是定义正确的用户交互的问题。我认为一个好的交互是在几秒钟后向用户显示出现问题,如果 30 秒后仍然失败,您应该为用户提供重试或取消的选项。