iOS_IPV6被拒解决办法

网上查找了好久,各种提测被拒(无奈)。

这是一个可行的方案,不代表所有人能解决。

app需要两个步骤处理:

使用的网络请求是 AFNetworking 3.0

一、 请求地方稍作调整

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

manager.requestSerializer = [AFHTTPRequestSerializer serializer];

//    manager.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/plain", nil];

manager.responseSerializer.acceptableContentTypes=nil;

manager.securityPolicy = [AFSecurityPolicy defaultPolicy];

manager.securityPolicy.allowInvalidCertificates = YES;// 忽略https证书

manager.securityPolicy.validatesDomainName = NO;// 是否验证域名

二、修改 AFNetworkReachabilityManager.h 里面的

+ (instancetype)manager 强制让代码ios9版本走AF_INET6

+ (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];

}

}


忽略https证书,这并不是一个好的的做法,对于公司开发者账号估计不安全,慎用!

对于个人开发者账号,如果是到了病马乱投医的地步,可以一试!

如果哪位大哥,有更好的办法,分享一下,希望共同探讨,共同进步,谢谢!

你可能感兴趣的:(iOS_IPV6被拒解决办法)