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

Уникальная идентификация устройства iOS для iOS 7.0 и выше

Ищем вашу помощь

Я столкнулся с проблемой при получении Идентификатора устройства. На самом деле я использую классы UIDevice + IdentifierAddition.h, NSString + MD5Addition.h для получения Идентификатора, но его возвращает тот же идентификатор для всех моих устройств, то есть iPhone 4s (iOS 7.1) и iPhone 5 (iOS 7.1.1).

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

Важно: я хочу отправить это приложение в магазин приложений, поэтому, пожалуйста, ответ должен соответствовать рекомендациям

4b9b3361

Ответ 1

Так как iOS 7 уже невозможно получить какие-либо уникальные идентификаторы устройства.

Ваши варианты:

Ответ 2

В Objective c

NSString *uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

В Swift

 var uniqueId=UIDevice.currentDevice().identifierForVendor.UUIDString as String
 println("Your device identifires =>\(uniqueId)")

Ответ 3

Теперь это возможно в iOS 11.0 +, Apple представила новый API под названием DeviceCheck API, с помощью которого разработчики могут однозначно идентифицировать устройство.

Как указано в документации:

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

Кроме того, проверьте следующее видео WWDC17, начиная с 24 минут: https://developer.apple.com/videos/play/wwdc2017/702/

Ответ 4

К сожалению, идентификаторForVendor изменяется при удалении приложения, чтобы гарантировать, что он не изменится, сохраните его в цепочке ключей

Я использовал pod 'SSKeychain' Домашняя страница: https://github.com/soffes/sskeychain

Вот код

 + (NSString *)getDeviceId {
           NSString *appName=[[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
           NSString *strApplicationUUID = [SSKeychain passwordForService:appName account:@"MY_KEY"];
           if (strApplicationUUID == nil) {
               strApplicationUUID  = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
               [SSKeychain setPassword:strApplicationUUID forService:appName account:@"MY_KEY"];
            }
    return strApplicationUUID;
}

Ответ 5

[UIDevice uniqueIdentifier]; устарел в ios 5 и выше.

Вы можете получить идентификатор поставщика, используя этот NSString * udid = [[UIDevice currentDevice] uniqueIdentifier];

и сохраните это в цепочке ключей и используйте позже.

Также вы можете проверить 1) НГУУИД 2) CFUUID

вы получите подробное описание здесь Уникальная идентификация устройства в ios

Ответ 6

Если вы пытаетесь идентифицировать устройство только один раз, то есть для оценки количества уникальных пользователей, я предлагаю использовать "рекламный идентификатор" ASIdentifierManager.

Apple Doc