2015-06-17 2 views
10

identifierForVendor является не предполагается изменить на переустановку приложения:identifierForVendor изменения на переустановке

Значение в этом свойстве остается неизменным в то время как приложение (или другой приложение от того же производителя) устанавливается на устройство iOS. Значение изменяется, когда пользователь удаляет все приложения этого поставщика с устройства и затем переустанавливает один или несколько из них. Значение также изменяется при установке тестовых сборок с использованием Xcode или при установке приложения на устройстве, использующем ad-hoc-распространение. Поэтому, если ваше приложение сохраняет значение этого свойства в любом месте, вы должны изящно обрабатывать ситуации, в которых изменяется идентификатор.

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

Однако, я только что проверил это с одним из наших живых приложений на App Store. Даже если ряд других наших приложений все еще установлен на устройстве, если я переустанавливаю приложение A, UUID, возвращаемый из идентификатораForVendor, изменяется каждый раз.

Это было не так.

Это работало. Но в какой-то момент UUID, похоже, начал менять «простые переустановки» (как указано выше). Это известная ошибка? Известно ли, что идентификатор ForVendor нарушен в сравнении с приведенной выше документацией? Любые обходные пути (кроме сохранения UUID для связки ключей, потому что этот метод ломается с синхронизацией iCloud)?

+0

Сохраните идентификатор ForVendor или пользовательский UUID в KeyChain. См.: [Как сохранить идентификаторForVendor в ios после удаления приложения ios на устройстве?] (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

Это известная ошибка. Похоже, Apple сделала обновление для AppStore, которое вызывает это новое поведение для идентификатораForVendor около 28 мая. Если вы ищете на форуме разработчиков приложений, есть и другие разработчики, сообщающие об одной и той же проблеме.

Подпись дс от компании Apple ответили на вопрос со следующим ответом:. «Пожалуйста, файл сообщения об ошибке на этом в https://developer.apple.com/bug-reporting> Мы знаем об этой проблеме и расследуем Там нет известного решения в это время.. "

+0

Я нашел/тему в новом форуме. Похоже, это известная проблема, как вы говорите. – Jonny

0

Мы собираемся повторно отправить заявку на участие в группе приложений, чтобы предоставить нам общие NSUserDefaults. Похоже, что App Group NSUserDefaults (в отличие от ключей хранения keychain-access-group и iCloud для хранения ключа) совместно используется на устройстве, но не над учетной записью iCloud. Если общий ключ «deviceid» NSUserDefault не существует, мы сохраним идентификатор IdentifierForVendor и затем применим его для всех наших приложений после его сохранения.

Смежные вопросы