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

IOS7 - уникальный идентификатор устройства

Наше приложение iOS предназначено для конкретных пользователей. Таким образом, мы использовали уникальный идентификатор устройства для идентификации пользователя. Этот подход работает отлично до iOS 6, потому что мы получаем одинаковое значение каждый раз.

NSString *strUniqueIdentifier = [[UIDevice currentDevice] uniqueIdentifier];

В iOS 7 выше метод перенастраивает разные значения, и мы получаем проблемы с идентификацией пользователя. iOS 7 apis предоставляет следующую альтернативу.

NSUUID *oNSUUID = [[UIDevice currentDevice] identifierForVendor];
[strApplicationUUID setString:[oNSUUID UUIDString]];

Я заменил "uniqueIdentifier" на "identifierForVendor" и создал Ad hoc build. Установленная сборка на устройствах iOS 7 и iOS 6. В iOS 7 до сих пор я получаю одинаковое значение каждый раз, но iOS 6 дает разные значения каждый раз, когда мы удаляем и переустанавливаем приложение.

В настоящее время приложение недоступно в магазине приложений. Так что я не уверен, как эта api работает для сборки App Store.

Вопросы: 1) Для appstore app, "identifierForVendor" возвращает одно и то же значение для iOS 7 каждый раз? или может измениться, когда пользователь удалит и переустановит приложение в будущем? 2) Имеется ли какая-либо другая альтернатива для "уникального идентификатора" в iOS 7 apis, которая возвращает одинаковые значения для iOS 6 и 7? 3) Любые другие предложения...

4b9b3361

Ответ 1

3) Любые другие предложения...

Вам следует рассмотреть стратегии идентификации и авторизации пользователя вместо устройства. В зависимости от идентификатора, специфичного для устройства, авторизованные пользователи не могут переключать устройства без какого-либо взаимодействия с администратором и разрешают доступ неавторизованным пользователям, если им удастся найти/украсть/занять авторизованное устройство. Вы можете избежать этих проблем, полагаясь на учетные данные пользователя, а не на идентификаторы устройств.

Ответ 2

Как вы можете видеть в документации здесь:

Значение этого свойства одинаково для приложений, которые поступают из тот же самый поставщик работает на одном устройстве. Возвращается другое значение для приложений на том же устройстве, что и у разных поставщиков, и для приложений на разных устройствах независимо от поставщика.

Значение этого свойства может быть nil, если приложение запущено в перед тем, как пользователь разблокирует устройство в первый раз после перезапуска устройства. Если значение равно нулю, подождите и получите значение снова позже.

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

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