iOS 设备ID 替代方案

大多数应用都会用到苹果设备的UDID号,UDID通常有以下两种用途:


1)用于一些统计与分析目的;【第三方统计工具如友盟,广告商如ADMOB等】


2)将UDID为用户ID来唯一识别用户,省去用户名,密码等注册过程。




过,2011时,苹果就宣布ios5.0以后的系统中将不再支持以下方法获取用户的UDID【苹果设备的唯一识别码】:


[UIDevice currentDevice] uniqueIdentifier];

【注:对于已越狱了的设备,UDID并不是唯一的.使用Cydia插件UDIDFaker,可以为每一个应用分配不同的UDID




时,苹果公司建议使用UUID【一种开放的软件构建标准】来替代:


-(NSString*) uuid {

    CFUUIDRef puuid =CFUUIDCreate( nil );

    CFStringRef uuidString =CFUUIDCreateString( nil, puuid);

    NSString * result = (NSString*)CFStringCreateCopy( NULL,uuidString);

    CFRelease(puuid);

    CFRelease(uuidString);

    return [result autorelease];

}



该方法每次都会获取一个唯一的标识字符串,开发者可以在应用第一次启动时候调用一次,然后将该串存储起来,以便以后替代UDID来使用。


问题是如果用户删除该应用再次安装时,又会生成新的字符串,所以不能保证唯一识别该设备。




而最近(20123月),有消息称苹果应用商店开始拒绝使用UDID应用上架。




替代方案:


现在网上有一现成的解决方案,使用设备的Mac地址,Mac地址也是唯一的.unix有系统调用可以获取Mac地址.但有些事情需要注意:

1.iPhone可能有多个Mac地址,wifi的地址,以及SIM卡的地址.一般来,们取en0的地址,为他是iPhonewifi的地址,是肯定存在的.

2.Mac地址涉及到隐私,应该胡乱将用户的Mac地址传播!所以我们需要将Mac地址进行hash之后,才能作DeviceId.




该解决方案源码地址:https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5


该方案提供了两个方法:


uniqueDeviceIdentifier (返回MACCFBundleIdentifierMD5)

uniqueGlobalDeviceIdentifier(返回MACMD5)




使用方法:


#import"UIDevice+IdentifierAddition.h"


NSLog(@"%@",[[UIDevicecurrentDevice] uniqueDeviceIdentifier]);

NSLog(@"%@",[[UIDevicecurrentDevice] uniqueGlobalDeviceIdentifier]);



测试结果:


WIFI下:


UDIDXXXX21f1f19edff198e2a2356bf4XXXX

新生成的:XXXX7dc3c577446a2bcbd77935bdXXXX


3G下:


UDIDXXXX21f1f19edff198e2a2356bf4XXXX

新生成的:XXXX7dc3c577446a2bcbd77935bdXXXX


GPRS


UDIDXXXX21f1f19edff198e2a2356bf4XXXX

新生成的:XXXX7dc3c577446a2bcbd77935bdXXXX


飞行模式下:


UDIDXXXX21f1f19edff198e2a2356bf4XXXX

新生成的:XXXX7dc3c577446a2bcbd77935bdXXXX


删除应用重装后:


UDIDXXXX21f1f19edff198e2a2356bf4XXXX


新生成的:XXXX7dc3c577446a2bcbd77935bdXXXX




参考整理自以下网页:


http://stackoverflow.com/questions/6993325/uidevice-uniqueidentifier-deprecated-what-to-do-now


http://www.cocoachina.com/bbs/read.php?tid=92404




补充:还有两个比较通用的开源解决方案:


OpenUDIDhttps://github.com/ylechelle/OpenUDID


SecureUDIDhttps://github.com/crashlytics/secureudid

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值