2012-03-21 19 views
5

我是一個初學者的iPhone應用程序開發者,我試圖通過IBAction爲按鈕顯示在標籤上的iPhone或應用程序的唯一標識符。我研究了一下,知道一些代碼已被棄用,並使用CFUUID代替。下面的代碼是我用過的。但是,每次觸摸IBAction按鈕時,UUID都會更改。我究竟做錯了什麼?CFUUIDCreate UUID的變化而不斷

CFUUIDRef udid = CFUUIDCreate(NULL); 

NSString *udidString = (NSString *) CFUUIDCreateString(NULL, udid); 

uuid.text= udidString; 

回答

5

您可以使用

[[UIDevice currentDevice] uniqueIdentifier] 

然而,這種方法計提折舊。爲了得到每個設備的唯一標識符,你仍然可以使用CFUUIDCreateString和輸出保存到用戶的默認值。每次運行應用時加載此值。如果應用程序被刪除,然後重新安裝,這個值將會不同。

如果你需要的唯一標識符跨應用程序安裝,你可以使用網絡的MAC地址。

+6

儲存於鑰匙串,它就會生存下來的應用程序刪除/重新:)。 – DougW 2012-06-22 17:49:30

+0

前段時間蘋果打破了網絡MAC地址。 – LightningStryk 2015-08-14 16:47:37

8

我想你誤會的CFUUIDCreate()目的,閱讀其documentation你就會明白。

我猜API是服務它的目的正確,這是創建通用唯一標識符意味着每次調用這個它會隨機返回你回來的唯一標識符的時間。

+0

那麼還有另一種獲得應用程序常量標識符的方法嗎? – wakaka 2012-03-21 11:46:34

+1

救一個,並使其作爲這樣 – Sneakyness 2012-04-03 22:27:10

4

如上所述,CFUUIDCreate旨在每次運行時創建不同的UUID。如果你喜歡,你可以創建一個並將它存儲在你的應用中,或者你可以嘗試類似於https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5的東西 - 基本上它使用MAC地址的MD5哈希作爲其基礎,在UIDevice上提供uniqueGlobalDeviceIdentifier函數。

[[UIDevice currentDevice] uniqueGlobalDeviceIdentifier]