iOS 手机网络类型和运营商怎么获取

    xiaoxiao2021-12-03  23

    Reachability 只能判断是WiFi还是蜂窝网络,无法获取到具体的类型是3G还是4G,现在获取手机网络类型可以直接使用苹果原生API了:

    首先我们导入库  CoreTelephony.framework

    然后在我们的类中加入下面头文件

    #import <CoreTelephony/CTTelephonyNetworkInfo.h> #import <CoreTelephony/CTCarrier.h>

    下面是获取网络环境的方法:

    基本原理是从UIApplication类型中通过valueForKey获取内部属性statusBar。然后筛选一个内部类型(UIStatusBarDataNetworkItemView),最后返回他的dataNetworkType属性。

    //获取联网方式 -(NSString *)networkType { NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews]; NSNumber *dataNetworkItemView = nil; for (id subview in subviews) { if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) { dataNetworkItemView = subview; break; } } NSString *networkType = nil; switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"] integerValue]) { case 0: networkType = @"无服务"; break; case 1: networkType = @"2G"; break; case 2: networkType = @"3G"; break; case 3: networkType = @"4G"; break; case 4: networkType = @"LTE"; break; case 5: networkType = @"Wifi"; break; default: break; } return networkType; } 下面是如何获取运营商名称:  

    //获取运营商信息 -(NSString *)getCarrierName { CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = [telephonyInfo subscriberCellularProvider]; NSString *currentCountry = [carrier carrierName]; return currentCountry; }

    转自:http://blog.csdn.net/dean19900504/article/details/44648583
    转载请注明原文地址: https://ju.6miu.com/read-679903.html

    最新回复(0)