当CloudKit发生错误时,客户端应该继续重发吗?

时间:2015-06-11 16:13:09

标签: ios recursion cloudkit

当客户端获得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吗?但是用户将重试,情况也一样。

我不知道这是不是重要,但是我已经在里面上传了几个包含资产/图像的记录,在很短的时间内上传了很多记录。第一条消息成功,但在某个时刻客户端开始收到错误。

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

1 个答案:

答案 0 :(得分:1)

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

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

所以看起来你已经按照自己应有的方式处理它了。

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