精华内容
下载资源
问答
  • 一、获取网络状态 Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法(Xcode 中的Documentation and API Reference可以搜到这个工程)。在应用程序中使用Reachability:    1. 添加源文件:   2.添加...

    参考:iOS:关于获取网络类型和运营商信息

    一、获取网络状态

    Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法(Xcode 中的Documentation and API Reference可以搜到这个工程)。在应用程序中使用Reachability:
        
        1. 添加源文件:
        将Reachability 例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中。

        2.添加framework:
       将SystemConfiguration.framework 添加进工程。

    二、获取运营商网络类型

       实现起来就是使用CTTelephonyNetworkInfo类型的currentRadioAccessTechnology方法。

    在苹果iOS 6.1 to iOS 7.0 API Differences中才提到了上述类型和其相关定义。如下,CTTelephonyNetworkInfo.h中新加入的定义:

    Added CTTelephonyNetworkInfo.currentRadioAccessTechnology

    Added CTRadioAccessTechnologyCDMA1x//3G

    Added CTRadioAccessTechnologyCDMAEVDORev0//3G

    Added CTRadioAccessTechnologyCDMAEVDORevA//3G

    Added CTRadioAccessTechnologyCDMAEVDORevB//3G

    Added CTRadioAccessTechnologyDidChangeNotification

    Added CTRadioAccessTechnologyEdge//2G

    Added CTRadioAccessTechnologyGPRS//2G

    Added CTRadioAccessTechnologyHSDPA//3G

    Added CTRadioAccessTechnologyHSUPA//3G

    Added CTRadioAccessTechnologyLTE//4G

    Added CTRadioAccessTechnologyWCDMA//3G

    Added CTRadioAccessTechnologyeHRPD//3G


    使用CTTelephonyNetworkInfo需先导入CoreTelephony.framework,然后

    #import <CoreTelephony/CTTelephonyNetworkInfo.h>


    最后方法如下:

    -(void)checkNetworkStatus

    {

        if ( ([[ReachabilityreachabilityForLocalWiFi] currentReachabilityStatus] !=NotReachable)) {

            NSLog(@"is wifi");

        }

        elseif ([[ReachabilityreachabilityForInternetConnection] currentReachabilityStatus] !=NotReachable)

        {

            NSLog(@"iscellular data");

            

            CTTelephonyNetworkInfo  *networkInfo = [[ CTTelephonyNetworkInfo   alloc ] init ];

            NSLog ( @"%@" , networkInfo.currentRadioAccessTechnology );


        }

        elseif([[ReachabilityreachabilityForInternetConnection] currentReachabilityStatus] ==NotReachable)

        {

            NSLog(@"is NotReachable");

        }


    }

    展开全文
  • 代码如下: +(NSString *)getNetWorkStates{ UIApplication *app = ...根据状态栏获取网络状态,可以区分2G、3G、4G、WIFI,系统的方法,比较快捷。稍微蛋疼的是万一连接的WIFI没有联网的话···你懂得

    代码如下:

    +(NSString *)getNetWorkStates{
    UIApplication *app = [UIApplication sharedApplication];
    NSArray *children = [[[app valueForKeyPath:@”statusBar”]valueForKeyPath:@”foregroundView”]subviews];
    NSString *state = [[NSString alloc]init];
    int netType = 0;
    //获取到网络返回码
    for (id child in children) {
    if ([child isKindOfClass:NSClassFromString(@”UIStatusBarDataNetworkItemView”)]) {
    //获取到状态栏
    netType = [[child valueForKeyPath:@”dataNetworkType”]intValue];

            switch (netType) {
                case 0:
                    state = @"无网络";
                    //无网模式
                    break;
                case 1:
                    state = @"2G";
                    break;
                case 2:
                    state = @"3G";
                    break;
                case 3:
                    state = @"4G";
                    break;
                case 5:
                {
                    state = @"WIFI";
                }
                    break;
                default:
                    break;
            }
        }
    }
    

    //根据状态选择
    return state;
    }
    根据状态栏获取网络状态,可以区分2G、3G、4G、WIFI,系统的方法,比较快捷。稍微蛋疼的是万一连接的WIFI没有联网的话···你懂得

    展开全文
  • #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) #import "Reachability.h" #include #include  #endif 下面附上我在项目中使用的代码: + ( NSString *)getNetconnType{ NSString *netconnType = ...

    在工程添加:SystemConfiguration.framework

    去苹果API里搜索Reachability,下载Demo(点击左上角Download Sample Code 即可下载),把demo里的Reachability.h和Reachability.m拖到自己的工程里。也可以在百度里面搜索”Reachability”,然后下载,不一定非要到苹果官网去下载。

    但是使用Reachability有一个问题,就是它只能判断当前是Wifi或者手机自带网络,没有办法详细得判断2G、3G、4G。
    如果确定为手机自带网络,这时可以使用系统自带的API来判断是2G、3G还是4G,这就要使用到CTTelephonyNetworkInfo这类,记得在工程添加CoreTelephony.framework

    记得导入头文件:

    import "Reachability.h"

    import <CoreTelephony/CTCarrier.h>

    import <CoreTelephony/CTTelephonyNetworkInfo.h>

    #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

    #import "Reachability.h"

    #include <sys/param.h>

    #include <sys/mount.h>

     #endif

    下面附上我在项目中使用的代码:

    + (NSString *)getNetconnType{
    
        NSString *netconnType = @"";
    
        Reachability *reach = [Reachability reachabilityWithHostName:@"www.apple.com"];
    
        switch ([reach currentReachabilityStatus]) {
            case NotReachable:// 没有网络
            {
    
                netconnType = @"no network";
            }
                break;
    
            case ReachableViaWiFi:// Wifi
            {
                netconnType = @"Wifi";
            }
                break;
    
            case ReachableViaWWAN:// 手机自带网络
            {
                // 获取手机网络类型
                CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
    
                NSString *currentStatus = info.currentRadioAccessTechnology;
    
                if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyGPRS"]) {
    
                    netconnType = @"GPRS";
                }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyEdge"]) {
    
                    netconnType = @"2.75G EDGE";
                }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyWCDMA"]){
    
                    netconnType = @"3G";
                }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyHSDPA"]){
    
                    netconnType = @"3.5G HSDPA";
                }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyHSUPA"]){
    
                    netconnType = @"3.5G HSUPA";
                }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyCDMA1x"]){
    
                    netconnType = @"2G";
                }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyCDMAEVDORev0"]){
    
                    netconnType = @"3G";
                }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyCDMAEVDORevA"]){
    
                    netconnType = @"3G";
                }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyCDMAEVDORevB"]){
    
                    netconnType = @"3G";
                }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyeHRPD"]){
    
                    netconnType = @"HRPD";
                }else if ([currentStatus isEqualToString:@"CTRadioAccessTechnologyLTE"]){
    
                    netconnType = @"4G";
                }
            }
                break;
    
            default:
                break;
        }
    
        return netconnType;
    }

    转载于:https://www.cnblogs.com/liugangBlog/p/11104000.html

    展开全文
  • @"4G" ;   break ;   case 5 :  {  state = @"WIFI" ;  }   break ;   default :  {  state = @" 未识别网络 " ;   break ;  }    }  }  }  ...

     +(NSString *)getStatus

    {

         NSArray *children = [[[[UIApplication sharedApplicationvalueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];

         NSString *state = [[NSString alloc]init];

         int netType = 0;

         //获取到网络返回码

         for (id child in children)

        {

             if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) 

    {

                 //获取到状态栏

                 netType = [[child valueForKeyPath:@"dataNetworkType"]intValue];

                 

                 switch (netType) 

         {

                     case 0:

                         state = @"无网络";

                         //无网模式

                         break;

                     case 1:

                         state = @"2G";

                         break;

                     case 2:

                         state = @"3G";

                         break;

                     case 3:

                         state = @"4G";

                         break;

                     case 5:

                     {

                         state = @"WIFI";

                     }

                         break;

                     default:

                     {

                         state = @"未识别网络";

                         break;

                     }

                    

                 }

             }

         }

         return state;

    }

    展开全文
  • 阐述 ...网络类型蜂窝相关的如果不细拆分 (2G、3G、4G) 则感觉并不那么费劲,毕竟官方已经给出了相关Demo。不过,在产品团队要求下还是做精做细,故记录一下整个功能探坑历程。 记录 0 调研 Sch...
  • 但是,苹果官方的开发SDK中并没有明确的类或者是接口来帮助我们简易的获取这个信息,目前针对苹果官方提供的Reachability类进行扩展实现此功能。希望对于有需要的同学们提供比较便利的使用。 点击此处...
  • 比如视频播放,需要线判断是Wifi还是4G,Wifi直接播放,4G先提示用户。获取网络状态的方法大概有三种: 1. Reachability 这是苹果的官方演示demo中使用到的方法,我们可以到苹果官方文档里下载Demo(点击左上角...
  • 获取iOS网络状态,目前有两个办法。 1.通过监听手机状态栏的信息。 2.通过使用官方提供的类Reachability。 一、通过手机监听手机状态栏的信息 好处: 1.可以通过苹果的审核上架AppStore。 2.代码量少,简单...
  • 比如视频播放,需要线判断是Wifi还是4G,Wifi直接播放,4G先提示用户。获取网络状态的方法大概有三种: 1. Reachability 这是苹果的官方演示demo中使用到的方法,我们可以到苹果官方文档里下载Demo(点击左上角...
  • 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也分为2G/3G/4G等不同制式.而不同的网络制式又对用户体验产生 较为明显的影响(对于依赖网络的项目而言).因此很有必要对不同的网络制式作相应的优化. ...
  • 在开发过程我们经常会遇到,获取手机连接的WiFi、4G等状态,并且判断是否连接网络,通常我们使用AFNetworking、Reachability等库,只要判断连接上WiFi或者4G就表明他已经连接网络并使用,但是有时候我们所连接的网络...
  • 直接贴代码吧,ios7之后是获取的较为准确,7以下我拿iphone5测试的是无法区分3g/2g。连iphone4都能升到7.1.4,而且目前主流的设备7以下的系统已经很少了,这个方案尽管不太完美,但影响不会太大 #import <...
  • 最近遇到一个功能就是根据用户当前的网络状,用户未联网需要提示一下,如果是Wifi可以推荐一些图片新闻,如果是3G模式设置为无图的模式,获取网络状态比较简单,毕竟中国现在的流量还是一个比较贵的状态,哪天用户...
  • 网络提示是App开发中不可缺少的模块。现在App需求智能化,要求根据网络的变化可以自动做出合理的处理(包括提示、下载...等)。对于网络的处理也非常简单,实现也就几行代码... Reachability(官方)的获取方法是打
  • 但通常我们只会判断用户是在WIFI还是移动数据,而实际上,移动数据也分为2G/3G/4G等不同制式.而不同的网络制式又对用户体验产生 较为明显的影响(对于依赖网络的项目而言).因此很有必要对不同的网络制式作相应的优化. ...
  • 之前用的根据状态栏获取的,iOS 13貌似不行了。。。 #import <Foundation/Foundation.h> typedef enum { NETWORK_TYPE_NONE = 0, NETWORK_TYPE_WIFI, NETWORK_TYPE_2G, NETWORK_TYPE_3G, NETWORK_...
  • 通过监听手机的 statusbar 的状态还获取用户的网络状态 能够区分2G、3G、4G、LTE 注意:使用这种方法时statusbar不可以隐藏,若你的App隐藏了statusbar,则此方法是不可以获得网络状态的。 + (NSString *)...
  • iOS 手机网络类型和运营商怎么获取

    千次阅读 2016-11-18 14:54:57
    Reachability 只能判断是WiFi还是蜂窝网络,无法获取到具体的类型是3G还是4G,现在获取手机网络类型可以直接使用苹果原生API了: 首先我们导入库 CoreTelephony.framework 然后在我们的类中加入下面头文件 #...
  • iOS开发之runtime的运用-获取当前网络状态 2014-03-27 我来说两句  收藏 我要 之前写过runtime的一些东西,这次通过runtime获取一些苹果官方不想让你拿到的东西,比如,状态栏内部的控件属性。本文将...

空空如也

空空如也

1 2 3 4
收藏数 80
精华内容 32
关键字:

ios获取4g