iOS开发资源iOS源码探究相关iOS开发精华专题

iOS开发给设备添加唯一标识/解决苹果禁用获取唯一的UUID和

2016-04-14  本文已影响1224人  Courage_SC

概述

已禁用[UIDevice uniqueIdentifier]获取设备唯一标识,还有一种生成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]来作为你框架和应用的唯一标示符。坦白的来说,应对这些变化也不是那么的难,见以下代码片段:

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

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

解决方案

iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于 NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在 重装App后,keychain里的数据还能使用。从ios 3.0开始,跨程序分享keychain变得可行。即使将APP删除或系统升级,也不会改变,除非还原系统。

SFHFKeychainUtils是另一个封装了KeyChain简单操作的第三方类库,SFHFKeychainUtils只提供了获取、保存和删除三个方法:

SFHFKeychainUtils 提供了在 iOS keychain中安全的存储密码的工具

下载地址https://github.com/ldandersen/scifihifi-iphone/tree/master/security

1、引入Security.frameWork框架。

2、引入头文件:SFHKeychainUtils.h.

3、存密码:

[SFHFKeychainUtils storeUsername:@"name" andPassword:@"aa"forServiceName:SERVICE_NAME updateExisting:1 error:nil];

4、删除密码:

[SFHFKeychainUtils deleteItemForUsername:@"name" andServiceName:SERVICE_NAME error:nil];

5、取密码:

NSString *passWord =  [SFHFKeychainUtils getPasswordForUsername:@"name"andServiceName:SERVICE_NAME error:nil];

如果还有不懂的可以问我

上一篇下一篇

猜你喜欢

热点阅读