zoukankan      html  css  js  c++  java
  • iOS开发中检测网络状态

            在网络应用中,我们要经常对用户的设备进行网络的实时监控,以便让用户了解自己的网络状态,防止一些误会,还可以根据用户的网络状态进行智能处理,节省用户流量,提高用户体验。例如:

            1.WIFI/3G网络:自动下载高清图片

            2.低速网络:只下载缩略图

            3.没有网络:只显示离线的缓存数据

    苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态,下载地址:

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

    在使用的时候需要导入框架SystemConfiguration.framework,没有使用ARC机制,如果你的项目使用了ARC,需要为Reachability.m单独设置编译选项:-fno-objc-arc。

            下面看一下Reachability.h文件。

            1、代表网络状态的枚举:

    typedef enum : NSInteger {
        NotReachable = 0,
        ReachableViaWiFi,
        ReachableViaWWAN
    } NetworkStatus;

    NotReachable: 网络不可达

    ReachableViaWiFi:通过WiFi可达

    ReachableViaWWAN:通过无线广域网可达

            2、下面是相关接口和注释

    /*!
     * 用于检测网络请求是否可以到达指定的主机名
     */
    + (instancetype)reachabilityWithHostName:(NSString *)hostName;
    
    /*!
     * 用于检测网络请求是否可以到达给定的ip地址
     */
    + (instancetype)reachabilityWithAddress:(const struct sockaddr_in *)hostAddress;
    
    /*!
     * 检查默认的路由器是否有效. 用于不连接到特定主机的应用.
     */
    + (instancetype)reachabilityForInternetConnection;
    
    /*!
     * 检测本地的WiFi连接是否有效
     */
    + (instancetype)reachabilityForLocalWiFi;
    
    /*!
     * 开始监听在当前的runloop中的通知.
     */
    - (BOOL)startNotifier;
    - (void)stopNotifier;
    
    //获取网络状态
    - (NetworkStatus)currentReachabilityStatus;
    
    /*!
     * 连接需求
     */
    - (BOOL)connectionRequired;

            3、网络连接状态改变时的通知标识

    NSString *kReachabilityChangedNotification = @"kNetworkReachabilityChangedNotification";
  • 相关阅读:
    Maven仓库详解
    Maven镜像配置
    使用spring的jdbcTemplate-----用JDBC模板查询数据库
    struts2+spring的两种整合方式
    Spring 中设置依赖注入
    Struts_json插件配置参数
    String、StringBuffer与StringBuilder之间区别
    有关collection中的一些数据结构
    MyBatis的foreach语句详解
    struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题
  • 原文地址:https://www.cnblogs.com/arthas/p/4666477.html
Copyright © 2011-2022 走看看