1. 程式人生 > >iOS: 獲取不變的UDID

iOS: 獲取不變的UDID

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