iOS獲取裝置唯一識別符號

2021-07-31 14:05:11 字數 1371 閱讀 5497

在開發中會遇到應用需要記錄裝置標示,即使應用解除安裝後再安裝也可重新識別的情況,在這寫一種實現方式——讀取裝置的uuid(universally unique identifier)並通過keychain記錄。

首先儲存裝置的uuid,可以使用類方法+ (id)uuid 是乙個類方法,呼叫該方法可以獲得乙個uuid。通過下面的**可以獲得乙個uuid字串:

nsstring *uuid = [[nsuuid uuid] uuidstring];
也可以儲存在ios 6中新增的vindor標示符 (idfv-identifierforvendor),獲取這個idfv的新方法被新增在已有的uidevice類中。跟advertisingidentifier一樣,該方法返回的是乙個nsuuid物件。

nsstring *idfv = [[[uidevice currentdevice] identifierforvendor] uuidstring];
如果使用者解除安裝了同乙個vendor對應的所有程式,然後在重新安裝同乙個vendor提供的程式,此時identifierforvendor會被重置,所以這裡要用到keychain來儲存。

keychain(鑰匙串)是使用蘋果裝置經常使用的,通常要除錯的話,都得安裝證書之類的,這些證書就是儲存在keychain中,還有我們平時瀏覽網頁記錄的賬號密碼也都是記錄在keychain中。ios中的keychain相比os x比較簡單,整個系統只有乙個keychain,每個程式都可以往keychain中記錄資料,而且只能讀取到自己程式記錄在keychain中的資料。ios中security.framework框架提供了四個主要的方法來操作keychain:

//儲存乙個uuid字串到鑰匙串:

cfuuidref uuid = cfuuidcreate(null);

assert(uuid != null);

cfstringref uuidstr = cfuuidcreatestring(null, uuid);

[samkeychain setpassword: [nsstring stringwithformat:@"%@", uuidstr]

//從鑰匙串讀取uuid:

**注意: setpassword和passwordforsevice方法中的**services 和 accounts 引數應該是一致的。

更多詳細用法說明可以看samkeychains documentation

基本的實現思路便是這樣,下面是具體的一種具體實現**,僅供參考。

+ (nsstring *)getdeviceid

return currentdeviceuuidstr;

}

iOS 裝置獲取唯一識別符號彙總

替代的方案是開發者應該使用 在ios 6中介紹的vendor或advertising標示符 cfuuid方法用來建立cfuuidref,並且可以獲得乙個相應的nsstring,如下 cfuuidref cfuuid cfuuidcreate kcfallocatordefault nsstring ...

iOS唯一識別符號

在2013年3月21日蘋果已經通知開發者,從2013年5月1日起,替代的方案是開發者應該使用 在ios 6中介紹的vendor或advertising標示符 cfuuid方法用來建立cfuuidref,並且可以獲得乙個相應的nsstring,如下 cfuuidref cfuuid cfuuidcre...

獲取唯一識別符號

ios 2.0版本以後uidevice提供乙個獲取裝置唯一識別符號的方法uniqueidentifier,通過該方法我們可以獲取裝置的序列號,這個也是目前為止唯一可以確認唯一的識別符號。但是,因為該唯一識別符號與手機一一對應,蘋果覺得可能會洩露使用者隱私,所以在ios 5.o之後該方法就被廢棄掉了。...