ios如何获取手机的网络状态和运营商名称
来源:互联网 发布:数据库管理系统的作用 编辑:程序博客网 时间:2024/05/18 00:57
以前获取手机的网络状态和运营商名称都是似有API,
现在我们可以大胆使用这些API了,完全可以通过审核。
具体方法如下,首先我们导入
CoreTelephony.framework
然后在我们的类中加入下面头文件
#import <CoreTelephony/CTTelephonyNetworkInfo.h>#import <CoreTelephony/CTCarrier.h>
下面是获取网络环境的方法:
-(void)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; } } switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"]integerValue]) { case 0: NSLog(@"No wifi or cellular"); infoLabel.text=@"无服务"; break; case 1: NSLog(@"2G"); infoLabel.text=@"2G"; break; case 2: NSLog(@"3G"); infoLabel.text=@"3G"; break; case 3: NSLog(@"4G"); infoLabel.text=@"4G"; break; case 4: NSLog(@"LTE"); infoLabel.text=@"LTE"; break; case 5: NSLog(@"Wifi"); infoLabel.text=@"Wifi"; break; default: break; }}
下面是如何获取运营商名称:
-(void)getcarrierName{ CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = [telephonyInfo subscriberCellularProvider]; NSString *currentCountry=[carrier carrierName]; NSLog(@"[carrier isoCountryCode]==%@,[carrier allowsVOIP]=%d,[carrier mobileCountryCode=%@,[carrier mobileCountryCode]=%@",[carrier isoCountryCode],[carrier allowsVOIP],[carrier mobileCountryCode],[carrier mobileNetworkCode]); serverLabel.text=currentCountry;}
控制台打印的log
2014-07-31 11:14:15.919 PingDemo[2469:60b] networktype=Wifi2014-07-31 11:14:15.926 PingDemo[2469:60b] [carrier isoCountryCode]==cn,[carrier allowsVOIP]=1,[carrier mobileCountryCode=460,[carrier mobileCountryCode]=01
其中isoCountryCode使用ISO 3166-1标准,参考:http://en.wikipedia.org/wiki/ISO_3166-1
mobileCountryCode(MCC)和mobileNetworkCode(MNC)可以参考:http://en.wikipedia.org/wiki/Mobile_country_code
真是手机截图:(我们用2G的网络来测试完全ok)
最近又看了下这个framework,发现了一个新的通知,可以用来玩玩,但是我个人感觉用处不大。
subscriberCellularProviderDidUpdateNotifier
用法:
self.telephonyInfo.subscriberCellularProviderDidUpdateNotifier = ^(CTCarrier *carrier) { dispatch_async(dispatch_get_main_queue(), ^{ NSLog(@"这个是什么啊"); }); };
这个我测试了下,只有手机还SIM 才会又这个通知,实用性不大。
假如有一天ios有手机处于弱网环境的通知就好了。
呵呵!
1 0
- ios如何获取手机的网络状态和运营商名称
- ios如何获取手机的网络状态和运营商名称
- ios如何获取手机的网络状态和运营商名称
- ios中获取手机的网络状态和运营商名称
- 获取手机运营商名称
- ios获取运营商和网络的demo
- ios获取运营商和网络的demo
- iOS 手机网络类型和运营商怎么获取
- iOS如何获取手机当前的网络状态
- iOS如何获取手机当前的网络状态
- BlackBerry手机上Java程序如何判断当前手机使用的运营商网络名称?网路制式?
- iOS获取网络类型和运营商信息
- iOS-获取当前设备的信息,网络状态,运营商,设备震动.获取设备信息
- 获取手机的机型和运营商
- iOS开发 - 如何获取设备的总容量和可用容量 网络运营商 3g/wifi判断 手机型号
- iOS开发 - 如何获取设备的总容量和可用容量 网络运营商 3g/wifi判断 手机型号
- ios如何判断当前网络的运营商
- iOS如何判断当前网络的运营商
- 母函数的运算
- NSMutableArray 排序
- 杭电 2097 Sky数
- 关于使用析构函数的几点注意事项
- jmx基础实例-管理文件配置(一)
- ios如何获取手机的网络状态和运营商名称
- oracle 备份在windows中使用批处理文件
- 黑马程序员_单例设计模式&多线程
- 数独(sudoku)的生成与破解
- 使用Jsoup 抓取页面的数据
- linux字符设备和块设备的区别
- lightoj 1383 Underwater Snipers
- Http连接通信过程
- VS本机进行远程调试