为预防 iOS开发IPV6 被拒解决办法预防
我总结下 我知道的方法
1.现在AFN3.0 以后 可以用 不过需要更改点 方法 地址:http://blog.csdn.net/it_kaka/article/details/51953734
2.使用微博 百度地图 微信 等SDK 的 需要 更新到最新
3.如果你使用了socket api 需要 做点更改 http://www.cnblogs.com/Camier-myNiuer/p/5527849.html
4.忘说了 需要用域名
5.如果你搭建了环境,自己测试通过了,但是还是被拒了,建议查看一下公司服务器是否支持了ipv6 ,有一种说法是 客户端及时通过了ipv6检测,不一定就是支持了ipv6,还需要公司服务器做出DNS响应,这部分东西 是公司运维的事
6.一切都OK 还是被拒,那么有可能是美国那边的测试问题,人工也会出错,重新提交即可
app需要修改3个地方
1.manager.responseSerializer.acceptableContentTypes =nil;
2.修改AFNetworkReachabilityManager.m文件,用下面函数替换原来的函数
- + (instancetype)manager {
- double version = [[UIDevice currentDevice].systemVersion doubleValue];
- if (version >= 9.0f) {
- struct sockaddr_in6 address; bzero(&address, sizeof(address));
- address.sin6_len = sizeof(address);
- address.sin6_family = AF_INET6;
- return [self managerForAddress:&address];
- } else {
- #if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
- struct sockaddr_in6 address;
- bzero(&address, sizeof(address));
- address.sin6_len = sizeof(address);
- address.sin6_family = AF_INET6;
- #else
- struct sockaddr_in address;
- bzero(&address, sizeof(address));
- address.sin_len = sizeof(address);
- address.sin_family = AF_INET;
- #endif
- return [self managerForAddress:&address];
- }
- }
3.网络请求代码这样写
- AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
- manager.responseSerializer.acceptableContentTypes = nil;
- manager.securityPolicy = [AFSecurityPolicy defaultPolicy];
- manager.securityPolicy.allowInvalidCertificates = YES;
- manager.securityPolicy.validatesDomainName = NO;