网上查找了好久,各种提测被拒(无奈)。
这是一个可行的方案,不代表所有人能解决。
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证书,这并不是一个好的的做法,对于公司开发者账号估计不安全,慎用!
对于个人开发者账号,如果是到了病马乱投医的地步,可以一试!
如果哪位大哥,有更好的办法,分享一下,希望共同探讨,共同进步,谢谢!
网友评论