изменения identifierForVendor при переустановке
identifierForVendor is не предполагается изменить при переустановке приложения:
значение в этом свойстве остается тем же, в то время как приложение (или другое приложение от того же поставщика) устанавливается на устройства iOS. Значение изменения при удалении пользователем всех приложений поставщика из устройство и впоследствии переустановит один или несколько из них. Значение может также менять при установке тестовых сборок с помощью Xcode или при установке приложение на устройстве использование ad-hoc дистрибутива. Поэтому, если ваше приложение хранит значение этого свойства в любом месте, вы должны изящно обрабатывать ситуации, когда идентификатор изменяется.
https://developer.apple.com/reference/uikit/uidevice/1620059-identifierforvendor
тем не менее, я только что протестировал это с одним из наших живых приложений в app store. Даже с рядом других наших приложений, все еще установленных на устройстве, если я переустановить приложение A UUID вернулся из identifierForVendor меняется каждый раз.
Это было не так.
раньше это работало. Но в какой-то момент UUID, похоже, начал меняться на "простых переустановках" (как указано выше). Это известная ошибка? Это identifierForVendor поломанной против вышеуказанных документах? Любые обходные пути (кроме сохранения UUID в keychain, потому что этот метод ломается при синхронизации iCloud)?
2 ответов
Это известная ошибка. Похоже, Apple сделала обновление для AppStore, которое вызывает это новое поведение для identifierForVendor около 28: th мая. Если вы ищете на форуме разработчиков приложений, есть другие разработчики, сообщающие о той же проблеме.
подпись gc от Apple ответили на этот вопрос со следующим ответом: "Пожалуйста, подайте сообщение об ошибке по адресу https://developer.apple.com/bug-reporting>. Мы знаем об этом и ведем расследование. Нет решения на данный момент."
мы собираемся повторно отправить, используя право группы приложений, чтобы дать нам общие NSUserDefaults. Похоже, что группы приложений NSUserDefaults (в отличие от keychain-access-group и iCloud key-value storage) совместно используются на устройстве, но не через учетную запись iCloud. Если общий ключ nsuserdefault "deviceid" не существует, мы сохраним ID IdentifierForVendor, а затем используем его для всех наших приложений после его сохранения.