如何为iOS应用测试设置仅IPv6网络?

时间:2016-10-07 09:45:22

标签: ios iphone app-store ipv6 appstore-approval

我第一次阅读有关IPv6的强制性支持仅在AppStore中发布的所有新应用程序中的网络是昨天,当时我的应用程序被Apple拒绝,并说明这是原因。

所以,我一直试图从我的角度重现这一点。我已经通过了Apple's guide并设置了一个NAT64网络并将我的iPhone连接到它(screenshot)。

但是,当我转到 test-ipv6.com 或任何其他网站检查设备上的IPv6连接时,它显示" 未检测到IPv6地址"信息。此外,我无法加载 ipv6.google.com ,据报道仅在IPv6网络上加载(如果我错了,请更正我)。

我是否遗漏了某些内容,或者我还能做些什么来测试我的应用仅支持IPv6网络兼容性?

P.S:当我在这个NAT64网络中尝试时,我的应用程序工作正常,页面加载正常。但是,在Apple的拒绝回复中,这些API最终失败了。

1 个答案:

答案 0 :(得分:0)

你正在使用AFNetworking吗? 如果是,请更新您的课程。 更改类AFNetworkReachabilityManager中AFNetworking Library中的代码中的以下行

将AF_INET更改为AF_INET6;

+ (instancetype)sharedManager {
    static AFNetworkReachabilityManager *_sharedManager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        struct sockaddr_in address;
        bzero(&address, sizeof(address));
        address.sin_len = sizeof(address);
        address.sin_family = AF_INET6;  //Change AF_INET TO AF_INET6
        _sharedManager = [self managerForAddress:&address];
    });

    return _sharedManager;
}

否则,您使用哪些类或库进行联网?

编辑:根据您的要求,这是一个关于如何测试您的应用并检查它是否已准备好ipv6的教程:

http://www.brianjcoleman.com/tutorial-how-to-test-your-app-for-ipv6-compatibility/

Alternate link over Waybackmachine

它涵盖了在您的mac中创建仅支持IPv6 NAT64的网络,然后从您的mac共享互联网连接到您的其他wifi(或蓝牙或其他)设备。

然后,您可以在应用中进行所有测试,确保所有呼叫都是通过仅支持ipv6的网络进行的。

<强> EDIT2:

那些能够看到你的ipv6 ip地址的网站。如果您使用该教程,则ipv6地址是私有(网络内部)地址。它用于在您的iPhone和Mac之间进行通信。 互联网网站看到的是您的 PUBLIC IP,由您的互联网服务提供商提供给您的调制解调器,通常是ipv4网络。

总而言之:您的应用正在使用其ipv6地址。那些测试网站无法检测到它,因为它们只能看到路由器/调制解调器的公共地址。

请参阅This link以了解有关公共与私人IP地址的更多信息。

如果这是您搜索的内容,或者它是否解决了您的问题,请接受答案:)