iOS6、7、8、9新特性总汇和适配说明 (6)

如果每次iOS系统的发布都没有一些新的功能会是什么样子?这些新功能相信大部分开发者已经知道了,你可能会发现一些新颖的方式将它们整合到你的app中去!

十一、检查无线路由是否可用

定制一个视频播放器的能力在iOS版本每次的发布中一直有所进步。比如说,在iOS6之前,你不能在MPVolumeView中改变AirPlay的icon。

在iOS7当中,你可以通过AirPlay,蓝牙或是其他的虚线机制了解是否有一个远程的设备可用。了解它的话,就可以让你的app在恰当的时候做恰当的事,比如说,在没有远程设备的时候就不显示AirPlay的icon。

以下是新增加到MPVolumeView的新属性和推送

Crayon Syntax Highlighter v2.7.1

@property (nonatomic, readonly) BOOL wirelessRoutesAvailable; //  是否有设备可以连接的无线线路?

@property (nonatomic, readonly) BOOL wirelessRouteActive; // 设备现在是否连接上了网络

NSString *const MPVolumeViewWirelessRoutesAvailableDidChangeNotification;

NSString *const MPVolumeViewWirelessRouteActiveDidChangeNotification;

1

2

3

4

 

@property (nonatomic, readonly) BOOL wirelessRoutesAvailable; //  是否有设备可以连接的无线线路?

@property (nonatomic, readonly) BOOL wirelessRouteActive; // 设备现在是否连接上了网络

NSString *const MPVolumeViewWirelessRoutesAvailableDidChangeNotification;

NSString *const MPVolumeViewWirelessRouteActiveDidChangeNotification;

 

[Format Time: 0.0014 seconds]

 

十二、了解蜂窝网络

在iOS7之前,是使用Reachability来检测设备是否连接到WWAN或是Wifi的。iOS7在这个基础上更进了一步,它会告诉你的设备连接上的是那种蜂窝网络,比如说是Edge网络,HSDPA网络,或是LTE网络。告诉用户他们连接上的是哪种网络可以优化用户体验,因为这样他们会知道网速如何,不会去请求需要高网速的网络请求。

这是CTTelephonyNetworkInfo的部分功能,它是CoreTelephony框架的一部分。iOS7还增加了currentRadioAccessTechnology属性和CTRadioAccessTechnologyDidChangeNotification到这个类。还有一些新的字符串常量来定义可能的值,比如说是CTRadioAccessTechnologyLTE。

以下代码告诉你在app delegate中如何使用这个新功能:

Crayon Syntax Highlighter v2.7.1

@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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

 

@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!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwgywp.html