2015-06-17 22 views
10

identifierForVendor是應該更改應用程序的重新安裝:identifierForVendor變化

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

https://developer.apple.com/reference/uikit/uidevice/1620059-identifierforvendor

不過,我剛剛與我們的應用商店現場應用的一個測試這一點。即使我們的許多其他應用程序仍安裝在設備上,如果我重新安裝應用程序A,每次從identifierForVendor返回的UUID都會更改。

它不是這樣的。

這用於工作。但在某些時候,UUID似乎開始改變「簡單重裝」(如上所述)。這是一個已知的錯誤?已知identifierForVendor與上面的文檔相比已被破壞?任何解決方法(除了將UUID保存到鑰匙串之外,因爲該方法會因iCloud同步而中斷)?

+0

在KeyChain中保留identifierForVendor或自定義UUID。請參閱:[如何在iOS設備上卸載ios應用程序後在ios中保留identifierForVendor?](http://stackoverflow.com/questions/21878560/how-to-preserve-identifierforvendor-in-ios-after-uninstalling-ios-app- on-device%3E) –

+0

讓我引用自己「除了將UUID保存到鑰匙串之外,因爲該方法與iCloud同步打破」。那麼,這種方法可以在某些情況下工作。這意味着它不適用於所有**的情況。 – Jonny

+0

您可以使鑰匙串條目特定於設備(注意:我從WWDC視頻中回顧了這一點,並且尋找資源 - 我沒有必要自己明確地測試它)。 https://www.andyibanez.com/using-ios-keychain/和https://developer.apple.com/library/ios/documentation/Security/Reference/keychainservices/index.html#//apple_ref/doc/constant_group/Keychain_Item_Accessibility_Constants –

回答

8

這是一個已知的錯誤。看起來蘋果在5月28日左右對AppStore進行了更新,導致了這種新的行爲對於identifierForVendor。如果您在App Developer論壇中搜索,則還有其他開發者報告相同的問題。

來自Apple的簽名gc已就此問題回覆了以下答案: 「請在此處提交關於此問題的錯誤報告,我們意識到此問題並正在調查。目前還沒有已知的解決方法。 「

+0

我在新論壇中找到了/ a線程。看起來像是你說的一個已知問題。 – Jonny

0

我們即將重新提交使用應用程序組授權給我們共享NSUserDefaults。這聽起來像應用程序組NSUserDefaults(與鑰匙串訪問組和iCloud鍵值存儲權利不同)在設備上共享,但不在iCloud帳戶上共享。如果共享的「deviceid」NSUserDefault鍵不存在,我們將保存IdentifierForVendor ID,然後在保存後將其用於所有應用程序。