苹果原生检测网络状态

作者: Frey丶 | 来源:发表于2016-08-29 09:38 被阅读183次

    平时,我们大部分人估计都是用的AF自带的检测网络状态类来判断当前手机网络状态,其实苹果原生的检测网络状态的类用着也是很方便和可行的.这里就不赘述苹果原生的优缺点直接上代码.

    1.苹果官方提供了一个Reachability示例demo,大家可以下载看下.

    https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip

    2.从上面的demo中取出Reachability.h和Reachability.m这两个类,拖入到自己的工程中.

    3.拖入.h和.m之后我们还需要添加一个系统依赖库,就是SystemConfiguration.framework,(针对小白:  找到build Phases,点击Link Binary with Libraries的箭头,然后点击+号,添加即可)

    4.这时候我们所有的准备工作都已经完毕了,大家直接可以在appDelegate类中导入他的头文件Reachability.h,然后在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  方法中实现即可.具体实现请看代码:

    5.Reachability *reach = [Reachability reachabilityWithHostName:@"http://www.baidu.com"];//开启网络状态监听

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(myNetStatusChange:) name:kReachabilityChangedNotification object:nil]; // 发送通知,通过kvo来实时监听网络状态变化.

    [self.hostReach startNotifier];//开启监听,  特别注意,这步一定要写.

    //以下是通知方法的实现.我这里用了个单例存起来来判断.

    - (void)myNetStatusChange: (NSNotification *)note

    {

    Reachability *currentReach = [note object];

    NSParameterAssert([currentReach isKindOfClass:[Reachability class]]);

    //判断网络状态

    switch (self.hostReach.currentReachabilityStatus) {

    case NotReachable:

    NSLog(@"网络不通");

    break;

    case ReachableViaWiFi:

    NSLog(@"wifi上网");

    [UserInfoCenter shareInstance].netModel = @"wifi"; //我用自己的单例存起来

    break;

    case ReachableViaWWAN:

    NSLog(@"手机上网");

    [UserInfoCenter shareInstance].netModel = @"手机自带网络";//我用自己的单例存起来

    break;

    default:

    break;

    }

    }

    6.以上就是使用Reachability的方法,有什么问题和写的不当之处敬请指出留言.

    相关文章

      网友评论

        本文标题:苹果原生检测网络状态

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