在iOS7以前,是使用Reachability来检测设备是否链接到WWAN或是Wifi的。iOS7在这个基础上更进了一步,它会告诉你的设备链接上的是那种蜂窝网络,好比说是Edge网络,HSDPA网络,或是LTE网络。告诉用户他们链接上的是哪一种网络能够优化用户体验,由于这样他们会知道网速如何,不会去请求须要高网速的网络请求。
这是CTTelephonyNetworkInfo的部分功能,它是CoreTelephony框架的一部分。iOS7还增长了currentRadioAccessTechnology属性和CTRadioAccessTechnologyDidChangeNotification到这个类。还有一些新的字符串常量来定义可能的值,好比说是CTRadioAccessTechnologyLTE。
如下代码告诉你在app delegate中如何使用这个新功能:
- @import CoreTelephony.CTTelephonyNetworkInfo;
- @interface AppDelegate ()
-
- @property (nonatomic, strong) CTTelephonyNetworkInfo *networkInfo;
- @end
-
- @implementation ViewController
-
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-
-
- self.networkInfo = [[CTTelephonyNetworkInfo alloc] init];
- NSLog(@"Initial cell connection: %@", self.networkInfo.currentRadioAccessTechnology);
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(radioAccessChanged) name:
- CTRadioAccessTechnologyDidChangeNotification object:nil];
-
-
- }
-
- - (void)radioAccessChanged {
- NSLog(@"Now you're connected via %@", self.networkInfo.currentRadioAccessTechnology);
- }
-
- @end
注意:研究一下CTTelephonyNetworkInfo.h 文件来看看是否有其余无线网络类型的的字符串常量。若是设备没有连上的话,currentRadioAccessTechnology 则会返回nil。