OGeek|极客世界-中国程序员成长平台

标题: ios - 如何为 iOS 应用程序测试设置仅 IPv6 的网络? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 17:46
标题: ios - 如何为 iOS 应用程序测试设置仅 IPv6 的网络?

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

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

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

我是否遗漏了什么,或者我可以做些什么来测试我的应用程序的纯 IPv6 网络兼容性?

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



Best Answer-推荐答案


您在使用 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 地址与私有(private) IP 地址的更多信息。

关于ios - 如何为 iOS 应用程序测试设置仅 IPv6 的网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39914245/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4