UDID替代方案

iOS获取UDID问题 iOS唯一标识的一个替代方案:生成UUID,并存储在keychain,pasteboard,NSUserDefaults中,保证至少一个APP卸载后重装UUID不变 阅读详情

背景:

大多数应用都会用到苹果设备的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来使用。

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

 

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

 

替代方案:

现在网上有一现成的解决方案,使用设备的Mac地址,因为Mac地址也是唯一的.unix有系统调用可以获取Mac地址.但有些事情需要注意: 
1.iPhone可能有多个Mac地址,wifi的地址,以及SIM卡的地址.一般来讲,我们取en0的地址,因为他是iPhone的wifi的地址,是肯定存在的.
2.Mac地址涉及到隐私,不应该胡乱将用户的Mac地址传播!所以我们需要将Mac地址进行hash之后,才能作为DeviceId上传.

 

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

该方案提供了两个方法:

uniqueDeviceIdentifier (返回MAC和CFBundleIdentifier的MD5值)
uniqueGlobalDeviceIdentifier(返回MAC的MD5值)

 

使用方法:

#import "UIDevice+IdentifierAddition.h"

NSLog(@"%@",[[UIDevice currentDevice] uniqueDeviceIdentifier]);
NSLog(@"%@",[[UIDevice currentDevice] uniqueGlobalDeviceIdentifier]);

 

测试结果:

WIFI下:

UDID:XXXX21f1f19edff198e2a2356bf4XXXX 
新生成的:XXXX7dc3c577446a2bcbd77935bdXXXX 

3G下:

UDID:XXXX21f1f19edff198e2a2356bf4XXXX
新生成的:XXXX7dc3c577446a2bcbd77935bdXXXX

GPRS下

UDID:XXXX21f1f19edff198e2a2356bf4XXXX
新生成的:XXXX7dc3c577446a2bcbd77935bdXXXX

飞行模式下:

UDID:XXXX21f1f19edff198e2a2356bf4XXXX
新生成的:XXXX7dc3c577446a2bcbd77935bdXXXX

删除应用重装后:

UDID:XXXX21f1f19edff198e2a2356bf4XXXX

新生成的:XXXX7dc3c577446a2bcbd77935bdXXXX

 

参考整理自以下网页:

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

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

 

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

OpenUDID:https://github.com/ylechelle/OpenUDID

SecureUDID:https://github.com/crashlytics/secureudid

iOS如何唯一标识一台iOS设备?(UDID、UUID):1、通过safari获取 iOS device udid的方法 2、UDID的替代方案(使用钥匙串配合uuid方法变相实现) 前言 对于唯一标识一个用户,我们需要考虑两种场景: 用户登录之前如何标识:努力去唯一标识用户当前正在使用的iOS设备 用户登录之后如何标识。 I、UDID UDID(Unique Device Identifier,设备唯一标识符)它是一个由40位16进制组成的序列 UDID其实也是在设备量产的时候,生成随机的UUID写入到iOS设备硬件或者某一块存储器中,所以变成了固定的完全不会改变的一个标识,用来区别每一个唯一的iOS设备,包括 iPhones, iPads, 以及 iPod touches。 在 阅读详情

相关推荐

ios UDID替换方案--真正可行的。OpenUDID

NULL 博文链接:https://zhangmingwei.iteye.com/blog/2090563

iPhone开发关于UDID和UUID的一些理解

iPhone开发关于UDID和UUID的一些理解    一.UDID(Unique Device Identifier)  UDID是Unique Device Identifier的缩写,中文意思是设备唯一标识.  在很多需要限制一台设备一个账号的应用中经常会用到,在Symbian时代,我们是使用IMEI作为设备的唯一标识的,可惜的是Apple官方不允许开发者获得设

手机程序开发技术文章集锦(iPhone&Window phone) 3198

iphone 伪装地址的插件

iphone 伪装地址的插件。可以用在基本所以软件里。 改变自己所在地址

更改udid来重置软件到期

1、没有购买正版的FY。 现在IOS5 只能授权一段时间。过了时间就出广告,看着很烦,不去广告就占据了三分之一的位置!  首先在源里面搜索下载UDIDFaker这个。 2、等biteSMS授权时间到了。 打开刚才下载的UDID选择biteSMS换个ID。! 相信大家都有iFile这个文件管理。 在/var/mobile/Library/biteSMS目录下删除biteSMS.db这个文件

IT经验分享 6730

Ansys-结构动力学分析-圆柱斜齿轮模态分析学习心得

模态分析的步骤基本一直,不同点在于选择什么单元类型,模型,节点约束等 圆柱斜齿轮模态分析的难点在于圆柱斜齿轮的模型建立,和所要约束的节点的选择。 用命令流方法建立齿轮模型效率较高,当然,在ansys里建立复杂的模型实在不敢恭维,对于自下而上建模,需要知道每个关键点的坐标位置。下图是创建圆柱斜齿轮模型的命令流方式。 模型不同使用的数据也就不同了。 对于施加约束的问题这就必须要熟悉select e...

weixin_45385183的博客 1831

利用Python脚本生成IDA Pro许可证文件idapro.hexlic的完整指南

本文提供了一份详细的Python脚本指南,用于自动化生成IDA Pro的许可证文件idapro.hexlic。文章深入解析了脚本原理,包括构建许可证JSON、RSA密钥修补与签名生成机制,并附有完整的操作流程与常见问题排查,帮助逆向工程人员快速完成本地化许可部署。

weixin_29313547的博客 606

[IOS] IOS 生成设备唯一标识

前言 iOS设备5.0以上放弃使用[[UIDevice currentDevice] uniqueIdentifier]来获得设备唯一ID iOS设备私有方法禁止用户获取和使用IMEI 需求 需要一个能够标识设备唯一性的ID Apple解决方案 1、使用CFUUIDCreateString(NULL, CFUUIDCreate(NULL))生成UUID 2、将UUID缓存在本...

{丸の子} 216

智驾系统分层架构:从传感器到执行器的全链路解析

本文深入解析了智能驾驶系统的分层架构,从传感器数据采集融合、应用层决策到车辆管理层执行,完整呈现了从感知到控制的全链路工作流程。文章重点阐述了架构设计的核心优势在于接口标准化与模块解耦,以ACC和LKA协同场景为例,说明了各层级如何通过清晰分工与高效协作,实现复杂系统的可靠、灵活与易于升级。

weixin_29219189的博客 399

苹果UDID(uniqueIdentifier)的替代方案

最近看到新闻,苹果已经开始拒绝访问了UDID的App提交到App Store了,轰轰烈烈的用户隐私保护运动似乎初见成效。但是程序员们似乎要郁闷了,没有了UDID,我们该如何追踪用户呢? 长期以来,iOS程序员们使用UIDevice.uniqueIdentifier作为追踪单一用户(设备)的标识。在iOS5.0 SDK中,我们可以看到uniqueIdentifier已经被注明为Deprecat

liqun3yue25的专栏 422

HFSS实战项目——GPS北斗双模微带天线

本文设计了一款方形圆极化微带天线应用于北斗B1和GPSL1频段,满足高增益、低VSWR、适当方向图等要求。设计中心频率为1568MHz,介质板采用厚度h=1.6mm的Arlon AD450(tm)板,相对介电常数为4.5,采用探针馈电。

2401_87464239的博客 1766

Python白色飘雪(完整代码)

Python绘制白色飘雪动画的完整代码。

AIGC 3万+

苹果禁用UDID再续:OpenUDID有望成为替代方案

因为涉嫌危害消费者的隐私问题,苹果公司决定停止使用原有的UDID系统,移动应用软件开发者们正在竞相寻找新的替代方案。移动应用销售平台Appsfire目前推出了OpenUDID,它是一个开源版本的UDID。Appsfire声称他们已经获得了包括其自己在内的17家移动广告公司的支持。 拥有一个直接的ID系统对开发商而言至关重要,他们需要知道他们的用户群体是哪些人,然后进行有针对性的广告。UDID废止

雷锋网 590

世界职业院校技能大赛—人工智能赛道项目逐字稿参考十二

世界职业院校技能大赛—人工智能赛道项目逐字稿参考十二

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 142

【转】UDID替代方案

UDID替代方案 背景: 大多数应用都会用到苹果设备的UDID号,UDID通常有以下两种用途: 1)用于一些统计与分析目的;【第三方统计工具如友盟,广告商如ADMOB等】 2)将UDID作为用户ID来唯一识别用户,省去用户名,密码等注册过程。 不过,2011年时,苹果就宣布ios5.0以后的系统中将不再支持以下方法获取用户的UDID【苹果设备的唯一识别码】: ...

weixin_33832340的博客 84

STM32F4 Flash数据的保存和读取。

STM32F4 Flash数据的保存和读取。

张一西的博客 9216

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ios UDID 替代方案

苹果禁止开发者获取手机udid,以下是替代方案 下载开源库文件 地址:http://download.youkuaiyun.com/detail/linqir/5984919 将库文件导入工程项目中 头文件中导入 #import "UIDevice+IdentifierAddition.h" 需要获取udid的地方使用        UIDevice *device

linqir的专栏 920

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: UIImagePickerController拍照与摄像
下一篇: Xcode 工程文件打开不出来, cannot be opened because the project file cannot be parsed.
focusjava
博客等级 码龄14年 127粉丝 528原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值