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