zoukankan      html  css  js  c++  java
  • iOS 网络状态监听和检查,

    实现网络状态监听和监察网络状态,注意下面介绍两种方法都需要使用到第三方文件Reachability.h,和Reachability.m,这两个文件可以再第三方库ASIHttpRequest中得到,使用前引入头文件即可:

    #import "Reachability.h"

    1.实时监听,这个方法下会启动一个Run loop 实时监听网络的状态。注意这里将hostReach声明为一个全局的变量。

    //开启网络状况的监听

    -(void)giveNetNotification{

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];

        hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"];//可以以多种形式初始化

        [hostReach startNotifier];  //开始监听,会启动一个run loop

        [self updateInterfaceWithReachability: hostReach];

    }

    //监听到网络状态改变

    - (void) reachabilityChanged: (NSNotification* )note{

        Reachability* curReach = [note object];

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

        [self updateInterfaceWithReachability: curReach];

    }

    //处理连接改变后的情况

    - (void) updateInterfaceWithReachability: (Reachability*) curReach{

        //对连接改变做出响应的处理动作。

        NetworkStatus status = [curReach currentReachabilityStatus];

        if(status == ReachableViaWWAN){

            printf(" 3g/2G ");

        } else if(status == ReachableViaWiFi){

            printf(" wifi ");

        }else {

            printf(" 无网络 ");

        }

    }

    2.进行一次网络状态检查,这个方法不会时时触发,适用于检查连接到指定网络的状态;

    -(void)netStatusNotification{

        if (([Reachability reachabilityForInternetConnection].currentReachabilityStatus==NotReachable)||([Reachability reachabilityForLocalWiFi].currentReachabilityStatus==NotReachable)){

            UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"警告" message:@"您的设备暂时没有可用的网络,不能进行智能检点操作!" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];

            [alert show];

        }

    }

  • 相关阅读:
    sqlite数据库如何远程连接?
    redis的两种持久化方案
    Netty入门系列(1) --使用Netty搭建服务端和客户端
    使用MQ消息队列的优缺点
    Netty基础系列(3) --彻底理解NIO
    Netty基础系列(2) --彻底理解阻塞非阻塞与同步异步的区别
    Netty基础系列(1) --linux网路I/O模型
    Jedis异常解决:NOAUTH Authentication required
    java并发编程(2) --Synchronized与Volatile区别
    java并发编程(1) --并发基础及其锁的原理
  • 原文地址:https://www.cnblogs.com/longtaozi/p/3843743.html
Copyright © 2011-2022 走看看