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

How to setup an IPv6 only network for iOS app testing?

我第一次了解到 AppStore 中发布的所有新应用程序都强制支持仅 IPv6 网络是在昨天,当时我的应用程序被拒绝,Apple 指出这是原因。

所以,我一直在尝试从头开始重现这个。我经历了 Apple's guide for the same and have setup a NAT64 network and connected my iPhone to it (screenshot).

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

我是不是遗漏了什么,或者我还能做些什么来测试我的应用程序的 IPv6 网络兼容性?

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

您在使用 AFNetworking 吗? 如果是,请更新您的 类。 在 Class AFNetworkReachabilityManager

的 AFNetworking 库中更改代码中的以下行

将 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 网络进行的。

编辑2:

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

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

请参阅 This link 了解更多关于 public 与私有 IP 地址的信息。