项目笔记--- iOS开发IPV6 被拒解决办法预防

来源:互联网 发布:数据库如何导入eas 编辑:程序博客网 时间:2024/05/11 23:37

为预防  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文件,用下面函数替换原来的函数

[objc] view plain copy
  1. + (instancetype)manager {  
  2.     double version = [[UIDevice currentDevice].systemVersion doubleValue];  
  3.     if (version >= 9.0f) {  
  4.         struct sockaddr_in6 address; bzero(&address, sizeof(address));  
  5.         address.sin6_len = sizeof(address);  
  6.         address.sin6_family = AF_INET6;  
  7.         return [self managerForAddress:&address];  
  8.     } else {  
  9. #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)  
  10.         struct sockaddr_in6 address;  
  11.         bzero(&address, sizeof(address));  
  12.         address.sin6_len = sizeof(address);  
  13.         address.sin6_family = AF_INET6;  
  14. #else  
  15.         struct sockaddr_in address;  
  16.         bzero(&address, sizeof(address));  
  17.         address.sin_len = sizeof(address);  
  18.         address.sin_family = AF_INET;  
  19. #endif  
  20.         return [self managerForAddress:&address];  
  21.     }  
  22. }  


3.网络请求代码这样写

[objc] view plain copy
  1. AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  
  2. manager.responseSerializer.acceptableContentTypes = nil;//[NSSet setWithObject:@"text/ plain"];  
  3. manager.securityPolicy = [AFSecurityPolicy defaultPolicy];  
  4. manager.securityPolicy.allowInvalidCertificates = YES;//忽略https证书  
  5. manager.securityPolicy.validatesDomainName = NO;//是否验证域名  

0 0
原创粉丝点击