在IPv6网络上审核应用。 请确保您的应用支持IPv6网络,因为 IPv6兼容性 是必需的。
有关支持IPv6网络的信息,请参阅支持iPv6 DNS64 / NAT64网络。
有关网络概述,请参阅关于网络。
我已经使用AFNetworking进行API调用。
请帮助找出相同的解决方案。
感谢。
答案 0 :(得分:20)
如果您使用的是特定于IPv4的API或硬编码的IP地址,则需要更新代码,尽管所有NSURLSession和CFNetwork API(包括NSURLConnection)都已支持IPV6
正如Apple所说:
在WWDC 2015上,我们宣布向仅IPv6网络服务过渡 在iOS 9.从2016年6月1日开始,所有应用程序都提交到App Store 必须支持仅IPv6网络。大多数应用程序不需要任何 更改,因为NSURLSession已经支持IPv6 CFNetwork API。
如果您的应用使用特定于IPv4的API或硬编码的IP地址,那么您就是 需要做一些改变。
虽然。 Apple还建议不要长期使用IP地址文字(不必要)
不要使用IP地址文字
确保您没有以点表示法传递IPv4地址文字 API,例如getaddrinfo和SCNetworkReachabilityCreateWithName。 相反,使用高级网络框架和地址不可知 API的版本,例如getaddrinfo和getnameinfo,并传递它们 主机名或完全限定的域名(FQDN)。见getaddrinfo(3) Mac OS X开发人员工具手册页和getnameinfo(3)Mac OS X. 开发人员工具手册页。
注意:在iOS 9和OS X 10.11及更高版本中,NSURLSession和CFNetwork 在本地自动合成来自IPv4文字的IPv6地址 在DNS64 / NAT64网络上运行的设备。但是,你仍然应该 努力摆脱你的IP地址文字代码
如果您使用的是AFNetworking Library,请确保将其更新为3.x以上的版本,因为它们似乎已更新了一些内容。 - > AFNetworking Added support for IPv6 to Reachability.
详细信息,请点击此链接
另外,要测试
您可以按照此详细教程进行操作:
答案 1 :(得分:13)
由于IPv6网络而导致Apple应用拒绝的解决方案
我对IPv6的互联网可访问性检查效果不佳。它总是显示没有网络。当我使用此代码时,苹果在24小时内批准了我的应用程序。致谢强>
更改 AFNetworking 类库中的代码中的以下行 AFNetworkReachabilityManager
将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;
}
修改强>
$ grep -nr 'AF_INET*' .
./Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m:122: address.sin_family = AF_INET;
replace
AF_INET; to AF_INET6;
答案 2 :(得分:7)
实际上我正在使用AFNetworking Library调用API。
我刚刚将Github中的 AFNetworkReachabilityManager 类替换为现有的类。苹果不再有问题了。
我的应用程序现在正常运作。
答案 3 :(得分:0)
从API URL中删除点表示法,因为IPv6网络不允许在URL中使用点表示法。我从API URL中删除了它的工作。