美文网首页
AF的使用

AF的使用

作者: heart_领 | 来源:发表于2018-12-12 09:57 被阅读8次

    一、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);
        }];
    }
    

    相关文章

      网友评论

          本文标题:AF的使用

          本文链接:https://www.haomeiwen.com/subject/krdxcqtx.html