Подтвердить что ты не робот

Идентификатор forVendor изменяется при переустановке

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

Ожидается, что identifierForVendor изменится, когда все приложения поставщиков будут удалены с устройства. Кроме того, он обязательно изменится, если вы собираете и устанавливаете из Xcode напрямую.

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

Источник: UIKit/UIDevice/identifierForVendor