iOS: 獲取不變的UDID
阿新 • • 發佈:2017-06-22
ref 才會 baidu 成了 個人 strip targe lock 添加
iOS: 獲取不變的UDID
iOS唯一標識的歷史歷程
iOS 6.0
在iOS6.0以前,是使用uniqueIdentifier來獲取手機的唯一標識,後來蘋果感覺這樣會泄露用戶隱藏,就封掉了這個方法;
iOS 6.0系統新增了兩個用於替換uniqueIdentifier的接口
- identifierForVendor
- advertisingIdentifier
但是 identifierForVendor 會在卸載後再重裝,就會改變,所以就不能當做手機的唯一標識使用。
後來,未來解決問題,程序員們想到了使用WiFi的mac地址來作為手機的唯一標識。很歡樂的使用著·······
但是············
iOS 7.0
iOS 7中蘋果再一次無情的封殺mac地址,使用之前的方法獲取到的mac地址全部都變成了02:00:00:00:00:00
聰明的程序員們,想到了用廣告標示符作為手機唯一的標識。但是·······
只要用戶重置了廣告標示符以後,還是會獲得一個新的廣告標識。這樣一來,廣告標識付也不可以用了。。。。
這下該如何是好呢?
接下來就是介紹解決方法的時候了
使用KeyChain來保存獲取到的唯一標示符呢,這樣以後即使APP刪了再裝回來,也可以從KeyChain中讀取回來,當然也不會害怕重置了廣告標示符
FCUUID
在github搜一下UDID,發現這個東東的星星最多。看來一下readme,添加到自己的項目中測試,可用
設備標識在 完全抹掉iPhone的時候,仍然會變。學長只能幫到這了····
使用方法
1、點擊下載所需文件
因為FCUUID需要依靠該作者的另外一個文件。所以這裏有就把所有的文件放在了一起,供大家下載使用。
作者 githun地址 https://github.com/fabiocaccamo/FCUUID
2、在項目中添加 Security.framework
3、導入頭文件
#import "FCUUID.h"
接下來就可以歡快的使用了
FCUUID提供的類方法
// 每次運行應用都會變
+(NSString *)uuid;
//changes each time (no persistent), but allows to keep in memory more temporary uuids
+(NSString *)uuidForKey:(id<NSCopying>)key;
// 每次運行應用都會變
+(NSString *)uuidForSession;
// 重新安裝的時候會變
+(NSString *)uuidForInstallation;
// 卸載後重裝會變
+(NSString *)uuidForVendor;
// 抹掉iPhone的時候才會變,適合做唯一標識
+(NSString *)uuidForDevice;
個人測試數據
iOS: 獲取不變的UDID