我的一个项目使用Apple的Reachability类来监控网络状态,并在发生变化时收到通知。
在阅读this article关于支持IPv6之后,我想知道是否要在这个类中使用它以使其与IPv6一起工作。
我在the same article之后设置了一个IPv6网络,一切似乎都运行良好,但可能是设置存在问题。
Reachability类的部分检查Internet连接是否与现在一样使用IPv6,还是需要进行一些更改?
答案 0 :(得分:8)
Apple自己的简短回答(https://developer.apple.com/videos/play/wwdc2015/719/约10:30 - 虽然我建议全程观看视频 - 或者至少要仔细查看这里的关键点:http://www.internetsociety.org/deploy360/blog/2015/06/video-of-apple-wwdc-session-about-ipv6-and-ios-9-now-available-and-some-screenshots/):< / p>
试试连接。
不使用预检连接
Reachability API(参见SCNetworkReachability Reference)是 用于识别连接后的诊断目的 问题。许多应用程序错误地使用这些API来主动检查 通过呼叫的互联网连接 SCNetworkReachabilityCreateWithAddress方法并将其传递给IPv4 地址为0.0.0.0,表示路由器上有 网络。但是,路由器的存在并不能保证 存在Internet连接。一般来说,避免预检网络 可达性。只是尝试建立连接并优雅地处理 故障。如果必须检查网络可用性,请避免呼叫 SCNetworkReachabilityCreateWithAddress方法。打电话给 SCNetworkReachabilityCreateWithName方法并将其传递给主机名 代替。
某些应用也会传递SCNetworkReachabilityCreateWithAddress方法 IPv4地址169.254.0.0,自组织链路本地地址 检查有效的Wi-Fi连接。检查Wi-Fi或蜂窝电话 连接,查找网络可达性标志 相反,kSCNetworkReachabilityFlagsIsWWAN。