美文网首页
AFNetworking-网络监控

AFNetworking-网络监控

作者: Code_人生 | 来源:发表于2019-09-29 10:30 被阅读0次

    一、简单使用

    • AFNetworkReachabilityManager sharedManager单例
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        
        // 单例 sharedManager
        AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
    
        [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            switch (status) {
                case AFNetworkReachabilityStatusUnknown:
                    [self showMessage:@"未知网络,请检查互联网"];
                    break;
                case AFNetworkReachabilityStatusNotReachable:
                    [self showMessage:@"无网络,请检查互联网"];
                    break;
                case AFNetworkReachabilityStatusReachableViaWWAN:
                    [self showMessage:@"蜂窝网络"];
                    break;
                case AFNetworkReachabilityStatusReachableViaWiFi:
                    [self showMessage:@"WiFi网络"];
                    break;
                default:
                    break;
            }
        }];
        [manager startMonitoring];
    
        return YES;
    }
    
    - (void)showMessage:(NSString *)msg {
        UIAlertController *aler = [UIAlertController alertControllerWithTitle:msg message:nil preferredStyle:UIAlertControllerStyleAlert];
        [aler addAction:[UIAlertAction actionWithTitle:@"知道了" style:UIAlertActionStyleDefault handler:nil]];
        [self.window.rootViewController presentViewController:aler animated:YES completion:nil];
    }
    
    • isReachableisReachableViaWWANisReachableViaWiFi判断网络状态
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
        AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
        NSLog(@"isReachable = %d",manager.isReachable);
        NSLog(@"isReachableViaWWAN = %d",manager.isReachableViaWWAN);
        NSLog(@"isReachableViaWiFi = %d",manager.isReachableViaWiFi);
    }
    

    二、判断用户是否开启网络请求权限

    1、蜂窝移动网
        CTCellularData *cellularData = [[CTCellularData alloc] init];
        
        cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState state) {
            switch (state) {
                case kCTCellularDataRestrictedStateUnknown:
                    NSLog(@"不明错误....");
                    break;
                case kCTCellularDataRestricted:
                    NSLog(@"没有授权....");
                    break;
                case kCTCellularDataNotRestricted:
                    NSLog(@"授权了....");
                    break;
                default:
                    break;
            }
        };
    
    2、WLAN

    查找中...

    三、源码

    + (instancetype)sharedManager {
        static AFNetworkReachabilityManager *_sharedManager = nil;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            _sharedManager = [self manager];
        });
    
        return _sharedManager;
    }
    

    相关文章

      网友评论

          本文标题:AFNetworking-网络监控

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