美文网首页
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