UDID
UDID是Unique Device Identifier的縮寫,中文意思是設(shè)備唯一標(biāo)識. 在很多需要限制一臺設(shè)備一個賬號的應(yīng)用中經(jīng)常會用到,在Symbian時代,我們是使用IMEI作為設(shè)備的唯一標(biāo)識的,可惜的是Apple官方不允許開發(fā)者獲得設(shè)備的IMEI.
UDID兩種用途:
1)用于一些統(tǒng)計與分析目的撵摆;【第三方統(tǒng)計工具如友盟胆敞,廣告商如ADMOB等】
2)將UDID作為用戶ID來唯一識別用戶,省去用戶名正林,密碼等注冊過程。
UDID被棄用蕾总,可以使用UUID來作為設(shè)備的唯一標(biāo)識囤屹。獲取到UUID后,如果用NSUserDefaults存儲付魔,當(dāng)程序被卸載后重裝時聊品,再獲得的UUID和之前就不同了。使用keychain存儲可以保證程序卸載重裝時几苍,UUID不變翻屈。但當(dāng)刷機(jī)或者升級系統(tǒng)后,UUID還是會改變的妻坝。
解決方案
使用SecureUDID伸眶,SecureUDID 是一個開源的基于沙箱機(jī)制的 UDID 解決方案惊窖,旨在解決蘋果因為廢棄了 UDID 后導(dǎo)致的隱私問題。
示例:
#import "SecureUDID.h"
NSString *domain = @"com.example.myapp";
NSString *key = @"difficult-to-guess-key";
NSString *identifier = [SecureUDID UDIDForDomain:domain usingKey:key];
UUID
UUID是Universally Unique Identifier的縮寫,中文意思是通用唯一識別碼厘贼。UUID是一個軟件建構(gòu)的標(biāo)準(zhǔn),也是被開源軟件基金會(Open Software Foundation,OSF)的組織在分布式計算環(huán)境(Distributed Computing Environment,DCE)領(lǐng)域的一部份.UUID的目的,是讓分布式系統(tǒng)中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定. 根據(jù)以上定義可知,同一設(shè)備上的不同應(yīng)用的UUID是互斥的,即能在改設(shè)備上標(biāo)識應(yīng)用.但是并沒有明確指出能標(biāo)識出裝有同一應(yīng)用的不同設(shè)備,據(jù)推測,這個UUID應(yīng)該是根據(jù)設(shè)備標(biāo)識和應(yīng)用標(biāo)識生成唯一標(biāo)識,再經(jīng)過加密而來的.
UUID實現(xiàn)
-(NSString*) uuid {
CFUUIDRef puuid = CFUUIDCreate( nil );
CFStringRef uuidString = CFUUIDCreateString( nil, puuid );
NSString * result = (NSString *)CFStringCreateCopy( NULL, uuidString);
CFRelease(puuid);
CFRelease(uuidString);
return [result autorelease];
}
該方法每次都會獲取一個唯一的標(biāo)識字符串界酒,開發(fā)者可以在應(yīng)用第一次啟動時候調(diào)用一次,然后將該串存儲起來嘴秸,以便以后替代UDID來使用毁欣。問題是如果用戶刪除該應(yīng)用再次安裝時,又會生成新的字符串岳掐,所以不能保證唯一識別該設(shè)備凭疮。