• 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";
  • 相关阅读:
    C#如何从普通C++动态库导入一个类?
    MFC的子类化技术
    [转贴] 不要以为使用了模式就是好设计
    VC编程经验汇总(三)
    钩子技术介绍及函数使用
    关于VC中的时间函数讨论
    my read_girl
    Linux + SVN / CVS / ClearCase
    OS + Linux Edit emacs /vi vim gvim /SciTE /gedit /kedit /UltraEdit /nedit /sedf
    java Regular Expression / regexp / zhengzebiaodashi
  • 原文地址:https://www.cnblogs.com/arthas/p/4666477.html
Copyright © 2020-2023  润新知