小编Ole*_*man的帖子

在哪些错误之后应该重新启动网络任务?

现在我正在尝试为我的应用程序构建网络系统。我希望我的网络操作能够在网络故障后重试。这就是苹果对这种行为的看法(为真实世界网络设计):

对于应用户要求提出的请求:

始终尝试建立连接。不要试图猜测网络服务是否可用,也不要缓存该决定。如果连接失败,请使用 SCNetworkReachability API 来帮助诊断失败的原因。然后:

  • 如果连接因暂时错误而失败,请尝试重新连接。
  • 如果连接因主机不可达而失败,请等待 SCNetworkReachability API 调用您注册的回调。当主机再次可访问时,您的应用程序应在无需用户干预的情况下自动重试连接尝试(除非用户已采取某些操作取消请求,例如关闭浏览器窗口或单击取消按钮)。

我成功地实现了这个功能,但是我在决定什么是“瞬时错误”时遇到了麻烦。

现在,我在收到NSURLErrorNotConnectedToInternet, NSURLErrorNetworkConnectionLost, NSURLErrorInternationalRoamingOff, NSURLErrorCallIsActive, NSURLErrorDataNotAllowedorNSURLErrorTimedOut和 500…599 范围内的 HTTP 状态代码后重试任务,但我不确定这些是否足够。

我很高兴听到更有经验的开发人员的建议,他们也使用重试行为。您如何决定何时重试任务,何时不重试?

提前致谢!

networking ios nsurlsession

1
推荐指数
1
解决办法
366
查看次数

标签 统计

ios ×1

networking ×1

nsurlsession ×1