菜单

有关UDID和UUID的有个别明白

2019年4月15日 - 一点资讯

一.UDID(Unique Device Identifier) 

UDID是Unique Device Identifier的缩写,汉语意思是设备唯一标识. 

在众多急需限制1台设备3个账号的利用中平时会用到,在Symbian时期,我们是选择IMEI作为设备的唯一标识的,可惜的是Apple官方不容许开采者获得装备的IMEI. 

ios五 sdk中的获取情势: 

  1. [UIDevice currentDevice] uniqueIdentifier] 

uniqueIdentifier在UIDevice.h中的定义如下: 

  1. @property(nonatomic,readonly,retain) NSString    *uniqueIdentifier  __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_5_0); // a string unique to each device based on various hardware info.  

情趣是iOS二.0以上及iOS5.0之下的系统可用,但不提出使用.Apple有希望在ios5.0自此剔除该函数. 

透过测试,未越狱的索爱,系统版本为五.0.壹,如故得以博得UDID. 

但是大家须求专注的某个是,对于已越狱了的装备,UDID并不是唯1的.使用Cydia插件UDIDFaker,能够为每2个使用分配不一致的UDID. 

从而UDID作为标识唯一设备的用处已经不大了. 

二.UUID(Universally Unique Identifier) 

UUID是Universally Unique Identifier的缩写,中文意思是通用唯1识别码. 

由网上资料展现,UUID是四个软件建构的规范,也是被开源软件基金会(Open
Software Foundation,OSF)的团组织在分布式计算环境(Distributed Computing
Environment,DCE)领域的1部份.UUID的指标,是让分布式系统中的全部因素,都能有唯1的识别资讯,而不必要经过大旨决定端来做辨识资源消息的钦命. 

故事以上定义可见,同1设备上的不等选用的UUID是排斥的,即能在改设备上标识应用.不过并不曾显著提出能标识出富有同一应用的两样装备,可是根据自家想见,这些UUID应该是依照设备标识和平运动用标识生成唯1标识,再经过加密而来的(纯猜想). 

iOS中赢得UUID的代码如下: 

  1. 1 -(NSString*) uuid { 2 CFUUIDRef puuid = CFUUIDCreate( nil ); 3 CFStringRef uuidString = CFUUIDCreateString( nil, puuid ); 4 NSString * result = (NSString *)CFStringCreateCopy( NULL, uuidString); 5 CFRelease(puuid); 6 CFRelease(uuidString); 7 return [result autorelease]; 8 } 

固然UUID是官方提议的一种替代UDID的建议方案,但网上有材质说UUID不可能保险在之后的系统晋级后(IOS六,柒)仍是能够用. 

透过本身测试如今,UUID在IOS肆和IOS五下均能够接纳,而且UUID每一遍更换的值都不壹致,须求开荒者自行保存UUID. 

如果利用UUID为标识保存用户的素材在互联网上,当用户重装软件后,UUID的值就恐怕会时有爆发变动(基本上可说是百分百会时有产生变动),用户则无从再一次下载原来的网络资料. 

三.贰个得力的缓解方案 

经过上述的商讨,大家轻巧察觉,无论是使用UDID或是UUID,咱们的目标一般都以为着让用户能够自行注册,而不需求账号密码.而利用UDID和UUID作为用户的ID也并不是永不缺陷. 

当今网上有一现成的缓解方案,使用设备的Mac地址,因为Mac地址也是唯1的.unix有系统调用能够获取Mac地址.但有个别事情需求小心: 

一.酷派也许有八个Mac地址,wifi的地点,以及SIM卡的地址.壹般来讲,大家取en0的地方,因为她是中兴的wifi的地址,是一定存在的.(例外意况还是有:市面上照旧存在1些联通的阉割版无wifi的魅族) 

贰.Mac地方涉及到隐秘,不应当胡乱将用户的Mac地址传播!所以我们供给将Mac地址进行hash之后,才能看做DeviceId上传. 

有关率先个注意点的难点,经过自个儿测试,未有Wifi功效的索爱3GS一样能够博得Mac地址,所以那应该是近日标识设备唯一最佳的二个缓解方案. 

缓解方案github下载地址github。com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-五 

背景:

大部分接纳都会用到苹果设备的UDID号,UDID平时有以下两种用途:

1)用于一些总结与分析指标;【第一方总括工具如友盟,广告商如ADMOB等】

二)将UDID作为用户ID来唯①识别用户,省去用户名,密码等登记进度。

唯独,201一年时,苹果就表露ios伍.0现在的系统少校不再帮忙以下办法得到用户的UDID【苹果设备的唯1识别码】:

  1. [UIDevice currentDevice] uniqueIdentifier]; 

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

同时,苹果公司提出选取UUID【壹种开放的软件创设规范】来顶替:

  1. -(NSString*) uuid {   
  2.     CFUUIDRef puuid = CFUUIDCreate( nil );   
  3.     CFStringRef uuidString = CFUUIDCreateString( nil, puuid );   
  4.     NSString * result = (NSString *)CFStringCreateCopy( NULL, uuidString);   
  5.     CFRelease(puuid);   
  6.     CFRelease(uuidString); return [result autorelease];   

该格局每回都会拿走2个唯一的标识字符串,开采者能够在使用第壹次运转时候调用3遍,然后将该串存款和储蓄起来,以便现在代表UDID来行使。

题材是1旦用户删除该行使再度安装时,又会生成新的字符串,所以无法担保唯一识别该设备。

而新近(二零一三年六月),有消息称苹果应用商店始发不肯利用UDID的施用上架。

取代方案:

今昔网上有壹现成的化解方案,使用设备的Mac地址,因为Mac地址也是唯一的.unix有连串调用能够博得Mac地址.但有些事情要求注意: 
一.金立可能有八个Mac地址,wifi的地方,以及SIM卡的地址.一般来讲,大家取en0的地点,因为她是索爱的wifi的地方,是必然存在的.
2.Mac地方涉及到隐秘,不该胡乱将用户的Mac地址传播!所以我们须要将Mac地址进行hash之后,才能看做DeviceId上传.

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

该方案提供了四个主意:

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

使用情势:

  1. #import “UIDevice+IdentifierAddition.h” NSLog(@”%@”,[[UIDevice currentDevice] uniqueDeviceIdentifier]); 
  2. NSLog(@”%@”,[[UIDevice currentDevice] uniqueGlobalDeviceIdentifier]); 

测试结果:

WIFI下:

UDID:XXXX21f1f19edff198e2a2356bf4XXXX 
新生成的:XXXX柒dc三c5774四六a2bcbd77935bdXXXX 

3G下:

UDID:XXXX21f1f19edff198e2a2356bf4XXXX
新生成的:XXXX7dc三c5774四陆a二bcbd77935bdXXXX

GPRS下

UDID:XXXX21f1f19edff198e2a2356bf4XXXX
一点资讯,新生成的:XXXX7dc三c5774四陆a二bcbd7793伍bdXXXX

航航空模型式下:

UDID:XXXX21f1f19edff198e2a2356bf4XXXX
新生成的:XXXX7dc叁c5774四6a二bcbd7793伍bdXXXX

删除应用重装后:

UDID:XXXX21f1f19edff198e2a2356bf4XXXX

新生成的:XXXX七dc三c5774四陆a2bcbd77935bdXXXX

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图