2016-03-26 29 views
0

雨燕2.2之前的UUID值是我每次打開應用程序時一樣,現在在每一個開放改變不同的UUID在SWIFT 2.2

我用這個代碼:

UIDevice.currentDevice().identifierForVendor!.UUIDString 

我怎麼能現在做的識別用戶?

+0

「Opening」?你是否重新編譯爲「開放」? – Larme

+1

爲什麼你需要識別用戶?出於隱私的具體原因,向用戶唯一標識設備的能力不可用。 – Abizern

回答

1

這實際上似乎是一個錯誤IMO。每次我在模擬器中運行我的應用程序時,它都會生成一個新的供應商ID。您可以通過在第一次啓動時將ID存儲到NSUserDefaults中,然後從NSUserDefaults中檢索/比較值而不是從identifierForVendor中獲取該值來繞過它。這將在默認情況下保存一個靜態的供應商ID,但理論上,供應商ID在每次啓動時都會改變。

親切的問候,

Krivvenz。

更新:我可以確認我也在同一個模擬器上安裝了多個應用程序,但供應商ID在每次啓動時仍然在變化。

更新2: - 我已將此記錄爲Apple的一個bug - 26195931.

+0

顯然你是對的,爲了鎖定供應商ID在設備上有另一個應用程序的破解也不適用於我。希望這個問題得到解決,直到此時這是解決方法^ – Bruno

+1

蘋果已經關閉了錯誤報告,現在說升級到最新的測試版軟件。 (X代碼8和Swift 3)。我從開發人員網站安裝了這些軟件,問題現在已解決! – Krivvenz

4

每次你刪除的應用,該UUID可能會改變。 如果你只是關閉並打開應用程序,它應該是相同的。 但是,如果您刪除應用程序(或通過xcode再次安裝),則可能會更改。

+0

要清楚,如果該應用程序被刪除並重新安裝,該ID不保證是相同的。 – Abizern

+0

它也可能會不時發生變化,比如說每隔一年或兩年。相同的UUID表示相同的用戶,但相同的用戶不保證相同的UUID。 – gnasher729

0

該屬性的值對來自運行在同一設備上的 相同供應商的應用程序是相同的。對於來自不同供應商的同一設備上的應用以及不同供應商的不同設備上的應用,返回不同值 。

在iOS設備上安裝應用程序(或來自同一供應商的另一個 應用程序)時,此屬性中的值保持不變。當用戶從 設備中刪除所有供應商的應用程序並隨後重新安裝其中的一個或多個應用程序時,值 會更改。使用Xcode安裝測試版本時,或者在使用特設分發的設備上安裝應用程序時, 的值也會發生變化。因此,如果您的應用程序 在任何位置存儲此屬性的值,則應優雅地 處理標識符更改的情況。

有關更多信息,請參閱此link

4

有幾個答案解釋爲什麼 UUID正在重置。有一個提供了潛在的變通,但我認爲它遠非理想。但我想強調一些有關UUID的方式工作,重要的是,作爲該對你的代碼庫或編譯的二進制的生產或調試版本絕對零影響一個偉大解決方法。

該應用程序(或來自同一供應商的另一個應用程序)安裝在iOS設備上時,此屬性中的值保持不變。當用戶從設備中刪除所有供應商的應用程序並隨後重新安裝其中的一個或多個應用程序時,該值會更改。

在開發App-A時,您只需從同一供應商(您自己)安裝App-B,並在App-A的開發生命週期內保持安裝,以防止此值發生變化。這實際上就像開始一個空白的新iOS項目一樣簡單,並且將空白石板安裝到您的測試設備上(使用相同的開發人員帳戶&等),然後在開發過程中不會再次卸載它。

應用-B持續了供應商(自己)恆定的UUID所以無論多少次,你刪除並重新安裝應用程序-A,它總是保持相同的UUID。

相關問題