不要使用IP地址字面值
确保您在向getaddrinfo和SCNetworkReachabilityCreateWithName等API传递以点表示法表示的IPv4地址文字时,使用高级网络框架和不依赖于地址版本的API,例如getaddrinfo和getnameinfo,并将主机名或完全限定域名(FQDN)传递给它们。请参阅getaddrinfo(3) Mac OS X Developer Tool Manual Page和getnameinfo(3) Mac OS X Developer Tool Manual Page。
注意:在iOS 9和OS X 10.11及更高版本中,NSURLSession和CFNetwork会自动从运行DNS64 / NAT64网络的设备上本地合成IPv6地址。但是,您仍应努力消除IP地址文字
如果您正在使用AFNetworking Library,请确保将其更新到3.x以上的版本,因为它们似乎已经更新了一些内容。-->AFNetworking Added support for IPv6 to Reachability
有关详细信息,请访问此链接
另外,为了测试
您可以按照这个详细的教程:
解决苹果应用被拒绝的IPv6网络问题
我的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;
实际上,我正在使用 AFNetworking 库调用 API。
我刚刚从 Github 上替换了我的现有类,使用了 AFNetworkReachabilityManager 类。现在苹果没有任何问题。
现在我的应用可以正常工作了。