很多地方都会需要用到唯一标志。
比如:
1. 我们相用一个设备的唯一标志当作用户id,特别是网络游戏,这样就可以省去注册的麻烦。
2. 想把app相关的文件加密,密钥哪里来的?有些人可能会说hard code,但是hard code的key比较容易被破解。而去hard code密钥加密的文件可以copy到其他设备。比如游戏的本地文件保存了一些游戏相关的数据,那么只要有一台机器购买100个金币,然后就可以把本地文件copy给其他设备,其他设备也可以有100金币了,因为所有的设备用的是同一个hard code密钥。
如果我们可以获取设备唯一的标识比如一个id,那么我们就可以用这个id当作用户名,或者直接用这个id当作密钥。这样就会好很多。比如游戏本地文件就具有唯一性了,就算copy到其他设备,别人也用不了,因为密钥不一样。
以前的iphone是可以获取设备的udid的,很简单:
[UIDevice currentDevice] uniqueIdentifier]
但是后来苹果公司禁止了。(如果没有记错的话,应该是从ios5开始就不能用了)
反正现在是用不了了。
在网上查了一下,在github上找到一个办法,
https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5
基本原理就是读取wifi芯片的mac地址,然后转换成一个hash值。
实验了一下,可行,我用的是ios skd 8
不知道苹果会不会把mac地址也禁止了。
所以最好的办法还是先使用上面的办法去获取,如果失败了,就加个错误处理,比如再采用hard code获取其他产生id的方式。
时间: 2024-10-27 03:07:54