一、AFSecurityPolicy的使用
- (AFSecurityPolicy *)securityPolicy{
[NSMutableArray arrayWithCapacity:1];
// .crt --->.cer
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"https" ofType:@"cer"];
NSData *data = [NSData dataWithContentsOfFile:cerPath];
NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);//打印不出来
NSSet *cerSet = [NSSet setWithObject:data];
AFSecurityPolicy *security = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate withPinnedCertificates:cerSet];
[AFSecurityPolicy defaultPolicy];
security.allowInvalidCertificates = YES;
security.validatesDomainName = NO;
return security;
}
二、解决第一次下载安装app时,无网络的bug
if (__IPHONE_10_0) {
[self cellularData];
}else{
[self startMonitoringNetwork];
}
#pragma mark - 网络权限监控
- (void)cellularData{
CTCellularData *cellularData = [[CTCellularData alloc] init];
cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState state) {
switch (state) {
case kCTCellularDataRestrictedStateUnknown:
NSLog(@"不明错误.....");
break;
case kCTCellularDataRestricted:
NSLog(@"没有授权....");
[self testBD]; // 默认没有授权 ... 发起短小网络弹出授权框
break;
case kCTCellularDataNotRestricted:
NSLog(@"授权了////");
[self startMonitoringNetwork];//授权之后在监控网络
break;
default:
break;
}
};
}
#pragma mark - startMonitoringNetwork
- (void)startMonitoringNetwork{
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未知网络,请检查互联网");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"无网络,请检查互联网");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"连接蜂窝网络");
[self testBD];
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"WiFi网络");
[self testBD];
break;
default:
break;
}
}];
[manager startMonitoring];
}
#pragma mark - 网络测试接口
- (void)testBD{
NSString *urlString = @"http://api.douban.com/v2/movie/top250";
NSDictionary *dic = @{@"start":@(1),
@"count":@(5)
};
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:urlString parameters:dic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"请求成功:%@---%@",task,responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"错误提示:%@---%@",task,error);
}];
}