UDID和UUID的區(qū)別
1.1【UDID】
UDID的全名為 Unique Device Identifier :設(shè)備唯一標(biāo)識(shí)符黎泣。
從名稱上也可以看出库继,UDID這個(gè)東西是和設(shè)備有關(guān)的抢蚀,而且是只和設(shè)備有關(guān)的医舆,有點(diǎn)類似于MAC地址炕柔。需要把UDID這個(gè)東西添加到Provisoning Profile授權(quán)文件中,也就是把設(shè)備唯一標(biāo)識(shí)符添加進(jìn)去谒亦,以此來(lái)識(shí)別某一臺(tái)設(shè)備竭宰。
UDID是一個(gè)40位十六進(jìn)制序列空郊,我們可以使用iTunes和Xcode來(lái)獲取這個(gè)值份招。
(1)iTunes獲取UDID:把我們的手機(jī)連上電腦,然后打開iTunes.:選中摘要--默認(rèn)這個(gè)位置顯示的是序列號(hào)狞甚,只要點(diǎn)擊一下序列號(hào)的位置锁摔,就可以切換為UDID了。
(2)Xcode獲取UDID:
把手機(jī)連上電腦哼审,然后打開Xcode谐腰,選擇Window-->Devices,就會(huì)顯示出當(dāng)前你連接上的所有設(shè)備涩盾,其中顯示的Identifier就是該設(shè)備的UDID:
自從iOS5之后十气,蘋果就禁止了通過(guò)代碼訪問(wèn)UDID,在這之前春霍,可以使用
[[UIDevice cuurrent] uniqueIdenfier]
這個(gè)方法來(lái)獲取某設(shè)備UDID砸西,現(xiàn)在是不可能了。
而在目前的SDK中址儒,蘋果提供了一個(gè)參數(shù)identifierForVendor來(lái)替代原來(lái)UDID的作用芹枷。通過(guò)代碼實(shí)現(xiàn)如下:
NSUUID *uuid = [UIDevice currentDevice].identifierForVendor;
NSLog(@"uuid 1 = %@",uuid.UUIDString);
此時(shí)打印出的字符串UUIDString這個(gè)東西不是真正的UDID,而是一個(gè)有一點(diǎn)像的替代品莲趣。如同我上面所說(shuō)鸳慈,UDID是只和iOS設(shè)備有關(guān)的,而這個(gè)identifierForVendor是應(yīng)用和設(shè)備兩者都有關(guān)的.
我們推測(cè)喧伞,這個(gè)identifierForVendor是一種應(yīng)用加設(shè)備綁定產(chǎn)生的標(biāo)識(shí)符走芋,相當(dāng)于是:Z(identifierForVendor) = X(某應(yīng)用) + Y(某設(shè)備),再經(jīng)過(guò)加密而來(lái)的. 當(dāng)然,和真正的UDID的區(qū)別是顯而易見的:也就是說(shuō)App的開發(fā)者沒(méi)有辦法去區(qū)分某一臺(tái)設(shè)備了潘鲫,而是只能識(shí)別某個(gè)應(yīng)用在某臺(tái)設(shè)備上翁逞。
1.2【UUID】
英文名稱是:Universally Unique Identifier,翻譯過(guò)來(lái)就是通用唯一標(biāo)識(shí)符。
是一個(gè)32位的十六進(jìn)制序列次舌,使用小橫線來(lái)連接:8-4-4-4-12 熄攘。UUID在某一時(shí)空下是唯一的。比如在當(dāng)前這一秒彼念,全世界產(chǎn)生的UUID都是不一樣的挪圾;當(dāng)然同一臺(tái)設(shè)備產(chǎn)生的UUID也是不一樣的浅萧。
下面是最簡(jiǎn)單獲取UUID的代碼如下:
for (int i = 0; i < 10; i++)
{
NSString *uuid = [NSUUID UUID].UUIDString;
NSLog(@"uuid 2 = %@",uuid);
}
通過(guò)運(yùn)行程序可以發(fā)現(xiàn),循環(huán)10次哲思,每一次打印的值都是不一樣的洼畅,當(dāng)然循環(huán)的再多,這個(gè)值永遠(yuǎn)不會(huì)出現(xiàn)兩個(gè)一樣的值棚赔。所以從某種程序上來(lái)說(shuō)帝簇,UUID跟你的設(shè)備沒(méi)有什么關(guān)系了。
蘋果宣稱如果第三方應(yīng)用開發(fā)者繼續(xù)分享或者使用iPhone靠益、Mac丧肴、AppleWatch的UDID的話,那么他們的應(yīng)用將會(huì)禁止上架胧后。
為什么蘋果要在應(yīng)用中禁止使用呢芋浮?
那是因?yàn)殡[私問(wèn)題。比如我開發(fā)了5款A(yù)pp壳快,很多用戶都下載了這5款A(yù)pp并使用纸巷。如果我能輕易的獲取這些用戶的UDID,
其實(shí)我能拼湊出用戶的很多信息眶痰。由于UDID本身的隱私屬性瘤旨,之前常常用來(lái)做第三方統(tǒng)計(jì)和其他的目的。當(dāng)然現(xiàn)在也
有人使用MAC地址來(lái)識(shí)別設(shè)備竖伯,因?yàn)镸AC地址也唯一的識(shí)別了一臺(tái)設(shè)備并且不會(huì)被修改存哲,不知道以后蘋果會(huì)對(duì)此如何操
作。果然iOS7中蘋果再一次無(wú)情的封殺mac地址黔夭,使用之前的方法獲取到的mac地址全部都變成了02:00:00:00:00:00宏胯。