互联网协议版本6(IPv6)是互联网协议(IP)的最新版本,它是为网络上的计算机提供识别和定位系统并通过互联网路由流量的通信协议。
因特网连接的用户,设备和应用程序的数量正在快速增长,因此原始版本的Internet协议(IPv4)的可用地址池正在迅速耗尽。 IPv4使用32位地址,并且可以支持直接连接到互联网的43亿设备。替换协议称为IPv6,使用128位地址并提供约三百四十万亿。
如今,Apple拒绝应用程序,因为应用程序应该支持IPv6网络。在我们的环境中,我们也遇到了与应用程序相同的情况,我们发现了这个问题的解决方案之一。大多数应用程序不需要任何更改,因为IPv6已经被NSURLSession和CFNetwork API支持。如果您的应用程序使用IPv4特定的API或硬编码的IP地址,则需要进行一些更改。
Apple还建议不要长期使用IP地址Literals,并确保您未将点表示法中的IPv4地址字面值传递给API,例如getaddrinfo和SCNetworkReachabilityCreateWithName。相反,我们可以使用高级网络框架和地址无关的API版本,例如getaddrinfo和getnameinfo,并传递它们的主机名或完全限定的域名(FQDN)。如果您正在使用AFNetworking Library,请确保将它更新到3.x以上的版本,因为它们似乎已经更新了少量的内容。我们要做的AFNetworking库的一些变化类AFNetworkReachabilityManager
+ (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;
}
我们需要作出上述模块中的一些变化对我们的应用程序,并添加到库中。完成此操作后,我们可以通过在MAC中启用Internet共享选项来测试应用程序的IPv6。
测试IPv6 DNS64/NAT64兼容性 首先,我们需要确保Mac通过Wi-Fi连接到互联网。导航到系统首选项并选择共享选项,并确保在选择共享选项之前需要按住选项键。选择Internet共享,然后选择创建NAT64网络复选框。现在我们需要选择提供互联网连接的网络接口,如以太网,Wi-Fi,蓝牙PAN。
我在这里选择Wi-Fi共享互联网连接并配置Wi-Fi网络选项。一旦配置了Wi-Fi,然后启用互联网共享选项。
一旦我们选择互联网共享,它会要求提示开始共享设备的互联网访问。
现在IOS设备已连接到共享网络,我们可以检查该应用是否在该网络上工作。
这不是一个编程问题,真的。这是网络配置。 –
基本上你需要确保你已经在你的项目中更新了所有的'NSULRConnection'到'NSURLSession',这几乎是欢乐的第一步。 – holex