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

Как получить уникальный идентификатор в устройстве iOS?

Я использовал адрес mac для идентификации устройств iOS на стороне сервера. При запуске моего приложения с iOS 7 невозможно получить правильный адрес mac. В качестве альтернативы я использовал

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

свойства. Но это значение также изменилось после каждой новой установки приложения. Теперь я хочу обнаружить определенное устройство на стороне сервера? Как я могу получить уникальный идентификатор для каждого устройства в iOS?

4b9b3361

Ответ 1

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

Чтобы получить идентификатор идентификатора в виде строки, вы можете использовать

let deviceId = UIDevice.current.identifierForVendor?.uuidString

UPDATE

Если вам нужен универсальный идентификатор, вы можете использовать advertisingIdentifier. Однако если пользователь ограничил отслеживание рекламы в настройках своего устройства, тогда это значение просто вернет все нули.

import AdSupport

let identifierManager = ASIdentifierManager.shared()
if identifierManager.isAdvertisingTrackingEnabled {
    let deviceId = identifierManager.advertisingIdentifier.uuidString
}

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

Ответ 2

Лучший способ получить идентификатор устройства - это идентификаторForVendor

UIDevice *device = [UIDevice currentDevice];

NSString  *currentDeviceId = [[device identifierForVendor]UUIDString];

UPDATE

Для Swift 4.1 используйте

UIDevice.current.identifierForVendor?.uuidString

Ответ 3

Получение идентификатора устройства в

Swift 3

let device_id = UIDevice.currentDevice().identifierForVendor?.UUIDString

Swift 4:

let device_id = UIDevice.current.identifierForVendor!.uuidString

Ответ 4

Получение идентификатора устройства в Swift 3.x

let deviceId = UIDevice.current.identifierForVendor?.uuidString

Ответ 5

Вы можете использовать этот lib: https://github.com/fabiocaccamo/FCUUID

Посмотрите таблицу в разделе Persistence. uuidForDevice будет охватывать большинство необходимых случаев, и это лучшая замена udid из старых версий iOS.

Примеры в Readme находятся в Objective-C, но он также работает со Swift. Я использовал его с первого выпуска Swift до сих пор (Swift 4.1).