我第一次读到关于在 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-推荐答案 strong>
您在使用 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/
|