可达性与 NSURLSession 响应检测互联网连接
Reachability vs NSURLSession response to detect internet connection
我正在为我的 API 调用构建错误案例,并想检查互联网连接不可用时的情况。
dataTaskWithRequest
似乎处理得很好,returns 一个 NSError
,代码为 -1009,并描述了没有互联网连接。我不必等待请求超时。
在什么情况下我想改用可达性框架?
谢谢
我做了一些研究并在 Apple 文档中找到了我的答案。
推荐的最佳做法是尝试连接。如果连接有问题,它会为您提供一个 NSError 对象,您应该使用该对象来测试连接性。
Apple 建议仅将可达性用作诊断错误和进一步调试已知问题的方法。似乎您应该只使用可达性来检测网络在出现故障后何时恢复在线。
“始终尝试建立连接。不要尝试猜测网络服务是否可用,也不要缓存该决定。
如果连接失败,使用 SCNetworkReachability API 来帮助诊断失败的原因。"
"当任何任务完成时,NSURLSession
对象使用错误对象或 nil(如果任务成功完成)调用委托的 URLSession:task:didCompleteWithError:
方法。
如果任务失败,大多数应用程序应重试请求,直到用户取消下载或服务器 returns 出现指示请求永远不会成功的错误。但是,您的应用不应立即重试。相反,它应该使用可达性 APIs 来确定服务器是否可达,并且只有在收到可达性已更改的通知时才应发出新请求。"
来源:
我正在为我的 API 调用构建错误案例,并想检查互联网连接不可用时的情况。
dataTaskWithRequest
似乎处理得很好,returns 一个 NSError
,代码为 -1009,并描述了没有互联网连接。我不必等待请求超时。
在什么情况下我想改用可达性框架? 谢谢
我做了一些研究并在 Apple 文档中找到了我的答案。
推荐的最佳做法是尝试连接。如果连接有问题,它会为您提供一个 NSError 对象,您应该使用该对象来测试连接性。
Apple 建议仅将可达性用作诊断错误和进一步调试已知问题的方法。似乎您应该只使用可达性来检测网络在出现故障后何时恢复在线。
“始终尝试建立连接。不要尝试猜测网络服务是否可用,也不要缓存该决定。
如果连接失败,使用 SCNetworkReachability API 来帮助诊断失败的原因。"
"当任何任务完成时,NSURLSession
对象使用错误对象或 nil(如果任务成功完成)调用委托的 URLSession:task:didCompleteWithError:
方法。
如果任务失败,大多数应用程序应重试请求,直到用户取消下载或服务器 returns 出现指示请求永远不会成功的错误。但是,您的应用不应立即重试。相反,它应该使用可达性 APIs 来确定服务器是否可达,并且只有在收到可达性已更改的通知时才应发出新请求。"
来源: