美文网首页日常收录
iOS开发之网络监听

iOS开发之网络监听

作者: 悄然林静 | 来源:发表于2020-09-30 17:03 被阅读0次
iOS监听网络方式 缺点
通过状态栏判断 一旦状态栏隐藏就会失效
AFNetworking中的网络监听模块 必须导入该框架,且无法判断移动网络的具体类型
Reachability + CTTelephonyNetworkInfo 代码较多

Reachability + CTTelephonyNetworkInfo

Reachability官网下载

Reachability 中的网络类型:

  • NotReachable,无网络链接
  • ReachableViaWiFi,WiFi
  • ReachableViaWWAN,蜂窝移动网络

上面可以看出,Reachability 并没有区分蜂窝移动网络的具体类型(例如2G/3G/4G),因此还需要配合 CTTelephonyNeiworkInfo 使用。

CTTelephonyNetworkInfo 中的蜂窝移动网络类型:

  • CTRadioAccessTechnologyGPRS,2G
  • CTRadioAccessTechnologyEdge ,2G
  • CTRadioAccessTechnologyWCDMA,2G
  • CTRadioAccessTechnologyHSDPA,3G
  • CTRadioAccessTechnologyHSUPA,3G
  • CTRadioAccessTechnologyCDMA1x,3G
  • CTRadioAccessTechnologyCDMAEVDORev0,3G
  • CTRadioAccessTechnologyCDMAEVDORevA,3G
  • CTRadioAccessTechnologyCDMAEVDORevB,3G
  • CTRadioAccessTechnologyeHRPD,3G
  • CTRadioAccessTechnologyLTE,3G

集成Reachability + CTTelephonyNetworkInfo的步骤

  • 下载Reachability.hReachability.m,并导入项目中
  • 添加CoreTelephony.frameworkTargets → Build Phases → Link Binary With Libraries
  • 导入头文件#import <CoreTelephony/CTTelephonyNetworkInfo.h>
/**
 *  判断当前网络类型
 */
+ (NSString *)getNetworkType {
    Reachability * reachability = [Reachability reachabilityWithHostName:@"www.baidu.com"];
    NetworkStatus netStatus = [reachability currentReachabilityStatus];
    NSString * networkType = @"";
    
    switch (netStatus) {
        case ReachableViaWiFi:
            networkType = @"WIFI";
            break;
            
        case ReachableViaWWAN: {
            // 判断蜂窝移动类型
            CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc] init];
            if (@available(iOS 12.0,*)) {
                NSDictionary<NSString *, NSString *> *infoDic = networkInfo.serviceCurrentRadioAccessTechnology;
                NSLog(@"infoDic = %@", infoDic);
            } else {
                if ([networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS] ||
                    [networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge] ||
                    [networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyWCDMA]) {
                    networkType = @"2G";
                } else if ([networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSDPA] ||
                           [networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSUPA] ||
                           [networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMA1x] ||
                           [networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0] ||
                           [networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA] ||
                           [networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB] ||
                           [networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyeHRPD]) {
                    networkType = @"3G";
                } else if ([networkInfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
                    networkType = @"4G";
                }
            }
        }
            break;
            
        case NotReachable:
            networkType = @"当前无网络连接";
            break;
    }
   
    return networkType;
}

相关文章

  • iOS开发之网络监听

    iOS监听网络方式缺点通过状态栏判断一旦状态栏隐藏就会失效AFNetworking中的网络监听模块必须导入该框架,...

  • iOS开发—网络监听

    网络监听用到的类为Reachability.h,这个Xcode项目里面是不自带的,需要从github上面下载,在使...

  • 监听网络

    ios 注册通知、监听 iOS-OC-监听网络状态,有网时数据自动刷新 iOS实时监控网络状态的改变 简书 iOS...

  • iOS开发 监听网络状态

    当用户第一次打开应用的时候,如果用户还没来得及点击同意连接网络,那么网络请求是失败的,所以,为了让APP的体验更好...

  • 线程常驻内存

    iOS开发中,新创建的线程,执行完成后会销毁,如何让线程常驻内存 使用场景 随时监听某些状态改变,如监听网络状态

  • iOS开发之预读取网络图片尺寸

    iOS开发之预读取网络图片尺寸

  • ios开发—实时监听网络状态

    在项目开发中,有的时候需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态; (2)...

  • iOS-AFN

    博文参考iOS开发之网络层探索iOS安全策略之HTTPS Github Demo AFN头文件信息

  • iOS开发之监听电话

    我们平时是用不到监听电话这个功能的,一般会在音乐播放器等功能的时候需要一些特殊设置的时候需要这个类,今天给小伙伴们...

  • iOS网络监听

    iOS网络监听,大陆国行手机在第一次安装app时,会先询问是否使用蜂窝移动流量,在点击之前,我们是不能访问数据的,...

网友评论

    本文标题:iOS开发之网络监听

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