iOS APP利用系统自带库监听网络状态

来源:互联网 发布:国家税务网络大学 编辑:程序博客网 时间:2024/05/14 13:22

一个成熟的APP在启动的时候需要对网络状态进行检查,一般来说只需要检查一次,所以一般可以在delegate。m函数中调用,也可以定义静态变量标识判断,下面将列出按照静态变量标示来实现检查操作

static BOOL isFirst = NO;
static BOOL canCheckNetwork = NO;

   // 在这里做一个网络可用的检查就可以了
    // Reachability 苹果公司提供的检查网络的第三方库
    // AFN 在Reachability基础上做一个自己的检查网络的库 基本上一样

    /* 使用方法
     */
    // 下面这行需要做一次. 监听网络状态 AppDelegate
    if (isFirst == NO) {
        // 网络只有在startMonitoring完成后才可以使用检查网络状态
        [[AFNetworkReachabilityManager sharedManager] startMonitoring];
        [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            canCheckNetwork = YES;
        }];
        isFirst = YES;
    }

    
    // 只能在监听完善后才能调用
    BOOL isOK = [[AFNetworkReachabilityManager sharedManager] isReachable];
    if (isOK == FALSE && canCheckNetwork == YES) {
        // 网络有问题
        NSError *error = [NSError errorWithDomain:@"网络错误" code:100 userInfo:nil];
        if (cb) cb(nil, nil, error);
        return;
    }


//四种状态

typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {

    AFNetworkReachabilityStatusUnknown          = -1,
    AFNetworkReachabilityStatusNotReachable     = 0,
    AFNetworkReachabilityStatusReachableViaWWAN = 1,
    AFNetworkReachabilityStatusReachableViaWiFi = 2,
};
0 0