当发生 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 秒后仍然失败,您应该为用户提供重试或取消的选项。
当客户端获得 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 秒后仍然失败,您应该为用户提供重试或取消的选项。