it-swarm.com.ru

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

В поисках вашей помощи

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

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

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

15
Karamjeet Singh

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

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

26
rckoenes

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

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

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

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


Правка:

Подробное руководство по этой теме Device Check можно найти здесь .

12
Muhammad Umair

В цели C

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

В Свифте

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

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

Я использовал 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
nahlamortada

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

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

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

Также вы можете проверить 1) NSUUID 2) CFUUID

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

0
Nik

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

Apple Doc

0
Mahesh