Ios 可达性与IPv6

Ios 可达性与IPv6,ios,objective-c,ipv6,reachability,Ios,Objective C,Ipv6,Reachability,我的一个项目使用Apple的可达性类来监视网络状态,并在发生变化时得到通知 在阅读了有关支持IPv6的内容后,我想知道是否要让这个类与IPv6一起工作 我在下面设置了一个IPv6网络,看起来一切正常,但可能是设置有问题 是可访问性类的一部分,检查Internet连接是否与IPv6保持一致,还是需要进行一些更改?我对IPv6和可访问性类也有类似的疑问。苹果在他们的文档中要求提供对IPv6类型的支持,如(struct in_addr6、AF_INET6、struct sockaddr_in6等),但

我的一个项目使用Apple的可达性类来监视网络状态,并在发生变化时得到通知

在阅读了有关支持IPv6的内容后,我想知道是否要让这个类与IPv6一起工作

我在下面设置了一个IPv6网络,看起来一切正常,但可能是设置有问题


是可访问性类的一部分,检查Internet连接是否与IPv6保持一致,还是需要进行一些更改?

我对IPv6和可访问性类也有类似的疑问。苹果在他们的文档中要求提供对IPv6类型的支持,如
(struct in_addr6、AF_INET6、struct sockaddr_in6等)
,但该类似乎尚未更新以获得这些类型。这是我的疑问。我还没有尝试IPv6测试,但只是在执行静态代码检查时观察到。可能需要进行一些更改


苹果自己的简短回答(大约10:30——尽管我建议观看完整的视频——或者至少看一下这里的要点:):

试试这个连接

一种复制粘贴,其中重申了以下内容:

无需飞行前连接

可访问性API(请参阅SCNetworkReachability参考)包括 用于识别连接后的诊断目的 问题许多应用程序错误地使用这些API来主动检查 通过调用 SCNetworkReachabilityCreateWithAddress方法并向其传递IPv4 地址为0.0.0.0,表示服务器上有路由器 网络。然而,路由器的存在并不能保证 存在Internet连接。一般情况下,应避免预飞行网络 可达性。只要试着建立一个连接,并优雅地处理
失败。如果必须检查网络可用性,请避免致电 SCNetworkReachabilityCreateWithAddress方法。打电话给 SCNetworkReachabilityCreateWithName方法并向其传递主机名 相反

某些应用程序还通过SCNetworkReachabilityCreateWithAddress方法 169.254.0.0的IPv4地址,自分配的链路本地地址,用于 检查是否存在活动的Wi-Fi连接。检查Wi-Fi或手机网络 连接,查找网络可达性标志 kSCNetworkReachabilityFlagsIsWWAN


你们明白了吗?若我并没有更新可达性库,这会产生问题吗?如果我的应用程序已经与旧库一起上传,会发生什么\如果我不更新可达性库,这会产生问题吗?如果我的应用程序已经用旧库上传了,会发生什么?如果你避免调用旧例程,那么你只会有一些死代码,这可能不是问题。如果你必须检查网络可用性,请避免调用
SCNetworkReachabilityCreateWithAddress
方法。调用
SCNetworkReachabilityCreateWithName
方法,并将主机名传递给它。
+ (instancetype)reachabilityForInternetConnection
{
    struct sockaddr_in zeroAddress;

    bzero(&zeroAddress, sizeof(zeroAddress));

    zeroAddress.sin_len = sizeof(zeroAddress);

    zeroAddress.sin_family = AF_INET;

    return [self reachabilityWithAddress:&zeroAddress];
}