2015-06-19 46 views
8

在我的iOS應用程序中,我必須限制用戶使用每個設備的iOS應用程序。爲此,我找到了一個解決方案,我們可以使用UUID (Universally Unique Identifier)UDID (Unique Device Identifier)。但根據this answer我不能使用UUID,因爲如果應用程序被刪除或重新安裝UUID已被更改,我不希望這樣。此外,蘋果拒絕應用程序,如果應用程序使用UDID如何唯一標識iOS設備而不是使用UUID和UDID

有什麼辦法可以唯一標識iOS設備。

+0

你不能。爲保密起見,Apple不允許它。但是你可以使用Keychain訪問來存儲一些有用的數據。但請檢查Apple指南。 –

+0

@Can ATAC,感謝您的評論。我不想存儲任何數據,實際上我想從設備獲得一些獨特的價值。有沒有其他方法可以做到這一點? – iKT

+0

UUID是...的方式,取決於您的應用程序設計。 –

回答

13

蘋果已經廢除了的UDID的方法之間共享,並會拒絕的應用程序將其用於唯一設備標識。 來源:TNW

你在找什麼是Vendor ID

+0

@Vijayts,謝謝你的回答。我還有一個疑問,因爲有兩種設備可能有相同的VenderID。任何想法? – iKT

+1

@iOSDev兩臺設備沒有機會擁有相同的vendorID。它對您設備上特定應用程序組的每個安裝都是獨一無二的。例如,同一應用程序供應商下的許多應用程序在設備上具有相同的供應商ID,直到該供應商的所有應用程序都被卸載並再次安裝在該設備上。只有在這種情況下,設備纔會爲同一個應用組的應用提供同一設備的新供應商ID。因此,名稱VendorID。 –

+0

@VijayTholpadi你確定它會在不同的設備上有所不同嗎?儘管在文檔中說:「不同廠商的應用程序在同一設備上返回不同的價值,而在不同設備上的應用程序返回不同的價值。」然後vendorId是解決方案。如果我希望每個應用程序都有所不同,那麼我們可以使用vendorId和包名稱進行散列。並且vendorID不會像advertisingId那樣重置,對吧? – karim

0

我使用這個庫爲我的項目,它的工作就像一個魅力,請嘗試:

https://github.com/blackpixel/BPXLUUIDHandler

使用方便:

進口BPXLUUIDHandler.h 檢索與UUID

[BPXLUUIDHandler UUID] 

這就是所有...

下面是從項目的GitHub的頁面的一些信息:

隨着iOS 5的,蘋果已否決該設備唯一標識符的API和 沒有提供一個友好的OBJ-C替換,而不是推薦 CFUUIDCreate和NSUserDefaults的。

CFUUIDCreate是不是很複雜,也不是NSUserDefaults的,但 這種解決方案在幾個不同的方式失敗:

  • 這不是一個快速的一次性調用來獲取UUID;你必須寫自己的包裝,使其友好
  • 它不會持續;刪除應用程序吹走的UUID(如果存儲在鑰匙串,雖然可以持久)
  • 有沒有辦法應用
+0

@iOSDev是否解決了您的問題? – mgyky

+0

#gyer謝謝你的回答。但是我在使用UUID時遇到問題。你有另一種解決方法嗎? – iKT

+0

不客氣@iOSDev。你寫道:「我不能使用UUID,因爲如果應用程序被刪除或重新安裝UUID已經改變,我不想這樣做」,但是我建議(BPXLUUIDHandler)在用戶重新安裝應用程序時不會改變。如果他們進行完全恢復,這將會發生變化,但對於大多數用戶而言,只有在他們獲得新設備之後纔會更改。請閱讀:https://blackpixel.com/writing/2012/03/unique-identifier-is-dead-long-live-unique-identifier.html – mgyky