開發(fā)中有時候我們需要獲取設備的唯一標識來處理一些業(yè)務上的需求您觉,在iOS5版本之前楣号,我們可以通過獲取設備的UDID作為唯一標識刽脖,后來被蘋果禁用了举庶,大部分小伙伴選擇使用WiFi的Mac地址來作為設備的唯一標識执隧,結果在iOS7之后也被蘋果給禁用了T_T。
現在給大家推薦一個獲取設備唯一標識的方法户侥,NSUUID+KeyChain的方法:
首先獲取設備的UUID:
NSString *UUID = [[NSUUID UUID] UUIDString];
KeyChain我們采用一個很好用三方SAMKeychain直接使用Cocoapods導入即可镀琉。
BOOL isSuccess = [SAMKeychain setPassword:UUID forService:@"com.yourcompany.yourapp" account:@"user"];
if (isSuccess) {
NSLog(@"保存成功");
}else{
NSLog(@"保存失敗");
}
!!!注意 需要真機測試才會將UUID保存到設備的鑰匙串里面去。
保存完UUID到鑰匙串之后我們先不獲取蕊唐,在保存UUID的方法上面我們先打印一下UUID看一下控制臺打印
這是圖片
當我們再次運行一下工程屋摔,我們會發(fā)現UUID改變了
UUID改變了
接下來我們讀取鑰匙串中的UUID
NSString *UUID = [SAMKeychain passwordForService:@"com.yourcompany.yourapp" account:@"user"];
注意存和取的Service(也就是Bundle ID)和account(用戶)要相同。
我們會發(fā)現控制臺打印的跟圖1是一樣的內容替梨,同樣卸載了App之后再次運行工程钓试,通過鑰匙串獲取到的UUID還是沒變装黑。
圖片
但是如果iPhone抹掉所有內容和設置或者恢復系統(tǒng)的話,UUID就會改變弓熏,因為鑰匙串的數據也不存在了恋谭。
以上是個人總結的方法,如果有不對的地方硝烂,歡迎大家及時指出箕别,我會盡快修改_。