在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。