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

还有一个生成iOS设备唯一标示符的方法是使用iOS设备的Media Access Control(MAC)地址。一个MAC地址是一个唯一的号码,它是物理网络层级方面分配给网络适配器的。这个地址苹果还有其他的名字,比如说是硬件地址(Hardware Address)或是Wifi地址,都是指同样的东西。

有很多工程和框架都使用这个方法来生成唯一的设备ID。比如说ODIN。然而,苹果并不希望有人通过MAC地址来分辨用户,所以如果你在iOS7系统上查询MAC地址,它现在只会返回02:00:00:00:00:00。

现在苹果明确的表明你应该使用-[UIDevice identifierForVendor]或是-[ASIdentifierManager advertisingIdentifier]来作为你框架和应用的唯一标示符。坦白的来说,应对这些变化也不是那么的难,见以下代码片段:

Crayon Syntax Highlighter v2.7.1

NSString *identifierForVendor = [[UIDevice currentDevice].identifierForVendor UUIDString];

 

NSString *identifierForAdvertising = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];

1

2

3

 

NSString *identifierForVendor = [[UIDevice currentDevice].identifierForVendor UUIDString];

 

NSString *identifierForAdvertising = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];

 

[Format Time: 0.0010 seconds]

每种方法都适配一种特别的用法:

identifierForVendor对供应商来说是唯一的一个值,也就是说,由同一个公司发行的的app在相同的设备上运行的时候都会有这个相同的标识符。然而,如果用户删除了这个供应商的app然后再重新安装的话,这个标识符就会不一致。

advertisingIdentifier会返回给在这个设备上所有软件供应商相同的 一个值,所以只能在广告的时候使用。这个值会因为很多情况而有所变化,比如说用户初始化设备的时候便会改变。

四、iOS现在要求app如需使用麦克风,需要征得用户同意

以前如果app需要使用用户的位置,通讯录,日历,提醒以及照片,接受推送消息,使用用户的社交网络的时候需要征得用户的同意。现在在iOS7当中,使用麦克风也需要取得用户同意了。如果用户不允许app使用麦克风的话,那么需要使用麦克风的app就不能接收不到任何声音。

以下的代码是用来查询用户是否允许app使用麦克风:

Crayon Syntax Highlighter v2.7.1

//第一次调用这个方法的时候,系统会提示用户让他同意你的app获取麦克风的数据

// 其他时候调用方法的时候,则不会提醒用户

// 而会传递之前的值来要求用户同意

[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {

    if (granted) {

        // 用户同意获取数据

    } else {

        // 可以显示一个提示框告诉用户这个app没有得到允许?

    }

}];

1

2

3

4

5

6

7

8

9

10

 

//第一次调用这个方法的时候,系统会提示用户让他同意你的app获取麦克风的数据

// 其他时候调用方法的时候,则不会提醒用户

// 而会传递之前的值来要求用户同意

[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {

    if (granted) {

        // 用户同意获取数据

    } else {

        // 可以显示一个提示框告诉用户这个app没有得到允许?

    }

}];

 

[Format Time: 0.0013 seconds]

你同时还要注意,如果你在获得用户的同意之前使用任何方法来使用麦克风的话,会引起iOS系统弹出以下警示栏:

 

五、[NSArray firstObject]的实现

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

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