可达性和IPv6

时间:2015-08-11 09:49:57

标签: ios objective-c ipv6 reachability

我的一个项目使用Apple的Reachability类来监控网络状态,并在发生变化时收到通知。

在阅读this article关于支持IPv6之后,我想知道是否要在这个类中使用它以使其与IPv6一起工作。

我在the same article之后设置了一个IPv6网络,一切似乎都运行良好,但可能是设置存在问题。

Reachability类的部分检查Internet连接是否与现在一样使用IPv6,还是需要进行一些更改?

1 个答案:

答案 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>

试试连接。

来自https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW25的复制粘贴,重申了这一点:

  

不使用预检连接

     

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。