UDID替代方案

2021-06-14 05:13:22 字數 1821 閱讀 1311

**

大多數應用都會用到蘋果裝置的udid號,udid通常有以下兩種用途:

1)用於一些統計與分析目的;【第三方統計工具如友盟,廣告商如admob等】

2)將udid作為使用者id來唯一識別使用者,省去使用者名稱,密碼等註冊過程。

不過,2023年時,蘋果就宣布ios5.0以後的系統中將不再支援以下方法獲取使用者的udid【蘋果裝置的唯一識別碼】:

[uidevice currentdevice] uniqueidentifier];
【注:對於已越獄了的裝置,udid並不是唯一的.使用cydia外掛程式udidfaker,可以為每乙個應用分配不同的udid】

同時,蘋果公司建議使用uuid【一種開放的軟體構建標準】來替代:

-(nsstring*) uuid
該方法每次都會獲取乙個唯一的標識字串,開發者可以在應用第一次啟動時候呼叫一次,然後將該串儲存起來,以便以後替代udid來使用。

問題是如果使用者刪除該應用再次安裝時,又會生成新的字串,所以不能保證唯一識別該裝置。

而最近(2023年3月),有訊息稱蘋果應用商店開始拒絕使用udid的應用上架。

現在網上有一現成的解決方案,使用裝置的mac位址,因為mac位址也是唯一的.unix有系統呼叫可以獲取mac位址.但有些事情需要注意:

1.iphone可能有多個mac位址,wifi的位址,以及sim卡的位址.一般來講,我們取en0的位址,因為他是iphone的wifi的位址,是肯定存在的.

2.mac位址涉及到隱私,不應該胡亂將使用者的mac位址傳播!所以我們需要將mac位址進行hash之後,才能作為deviceid上傳.

該方案提供了兩個方法:

uniquedeviceidentifier(返回mac和cfbundleidentifier的md5值)

uniqueglobaldeviceidentifier(返回mac的md5值)

使用方法:

#import

"uidevice+identifieraddition.h

"nslog(@"

%@",[[uidevice currentdevice] uniquedeviceidentifier]);

nslog(@"

%@",[[uidevice currentdevice] uniqueglobaldeviceidentifier]);

測試結果:

wifi下:

udid:***x21f1f19edff198e2a2356bf4***x 

新生成的:***x7dc3c577446a2bcbd77935bd***x 

3g下:

udid:***x21f1f19edff198e2a2356bf4***x

新生成的:***x7dc3c577446a2bcbd77935bd***x

gprs下

udid:***x21f1f19edff198e2a2356bf4***x

新生成的:***x7dc3c577446a2bcbd77935bd***x

飛行模式下:

udid:***x21f1f19edff198e2a2356bf4***x

新生成的:***x7dc3c577446a2bcbd77935bd***x

刪除應用重灌後:

udid:***x21f1f19edff198e2a2356bf4***x

新生成的:***x7dc3c577446a2bcbd77935bd***x

參考整理自以下網頁:

補充:還有兩個比較通用的開源解決方案:

openudid:

secureudid:

UDID替代方案

from 大多數應用都會用到蘋果裝置的udid號,udid通常有以下兩種用途 1 用於一些統計與分析目的 第三方統計工具如友盟,廣告商如admob等 2 將udid作為使用者id來唯一識別使用者,省去使用者名稱,密碼等註冊過程。不過,2011年時,蘋果就宣布ios5.0以後的系統中將不再支援以下方法...

UDID替代方案

大多數應用都會用到蘋果裝置的udid號,udid通常有以下兩種用途 1 用於一些統計與分析目的 第三方統計工具如友盟,廣告商如admob等 2 將udid作為使用者id來唯一識別使用者,省去使用者名稱,密碼等註冊過程。不過,2011年時,蘋果就宣布ios5.0以後的系統中將不再支援以下方法獲取使用者...

iOS開發 用keychain替代UDID

從2013 5 1日開始蘋果就禁止對uuid的應用的通過了。所以我們需要用一些辦法替換,下面我就是用keychain的訪問替換掉uuid的。那麼,關於keychain的應用,apple提供了乙個叫generickeychain的例子程式,在這裡 其中封裝了乙個簡化keychain操作的類 keych...