Cur*_*Man 1 connectivity wifi ios nwpathmonitor
我想知道 Wi-Fi 是否有互联网连接。有时我们的设备已连接 Wi-Fi,但 Wi-Fi 没有互联网连接。
NWPathMonitor 或 Connectivity 第三方。我尝试过,但这并不是万无一失的。
我知道我可以编写一个方法来 ping 服务器,但这是一件非常低效且成本高昂的事情。
有任何想法吗?
确定网络是否具有 Internet 连接的唯一方法是尝试连接到 Internet。设备上没有任何内容可供您查询以获取答案。
即使有,也必须诉诸轮询/ping,因为连接可能随时发生变化。
当用户完成热点登录表单时,WiFi 连接可以从无互联网过渡到互联网。如果上游互联网连接因某种原因出现故障,WiFi 连接可以从互联网过渡到无互联网。WiFi 连接可能已连接到 Internet,但由于路由故障或其他一些问题而无法与您的应用程序所需的特定主机进行通信。
由于所有这些原因,苹果公司积极劝阻“飞行前”检查。即使检查通过,网络操作仍然可能因一微秒后发生的网络状态变化而失败。这也是不必要的开销,因为通常可以安全地假设大多数设备在大多数时间都具有某种互联网连接,特别是如果设备是 iPhone。
无论如何你都需要处理错误。只需尝试该操作,看看会发生什么。如果没有网络连接,它很快就会失败。
如果您想向用户提供更多反馈,那么您可以开始主动检查互联网连接,并使用指数回退来响应连接错误。
这样您的应用程序就不会不断“ping”。
SCNetworkReachability您还可以使用该错误来启动用于检查连接性的进程 。您可能不直接使用该框架,特别是如果您使用 Swift 编写,您可能更喜欢使用包装它并使其更易于访问的东西,例如 Ashley Mills 的Reachability.swift