Уникальная идентификация устройства iOSIOS

Программируем под IOS
Ответить
Гость
 Уникальная идентификация устройства iOS

Сообщение Гость »


Я хочу получить уникальный идентификатор с устройства iOS, даже если пользователь удалит приложение, а затем переустановит его. Для этого я уже пробовал:

letvendorID = UIDevice.current.identifierForVendor?.uuidString let adIdentifier = ASIdentifierManager.shared().advertisingIdentifier.uuidString и оба возвращают разные номера, когда я удаляю приложение, а затем переустанавливаю его.

Затем я попробовал другой способ, написав в связку ключей и снова прочитав ее:

// KeychainService.swift

import Foundation импорт безопасности класс KeychainService { static let serviceIdentifier = "ИдентификаторИдентификатора вашего приложения" class func saveUUID(_ uuid: String) -> Bool { Guard let data = uuid.data(using: .utf8) else { return false } пусть запрос: [Строка: Любой] = [ kSecClass как строка: kSecClassGenericPassword, kSecAttrService как строка: serviceIdentifier, kSecValueData как строка: данные ] SecItemDelete (запрос как CFDictionary) let status = SecItemAdd (запрос как CFDictionary, ноль) статус возврата == errSecSuccess } классовая функция loadUUID() -> String? { пусть запрос: [Строка: Любой] = [ kSecClass как строка: kSecClassGenericPassword, kSecAttrService как строка: serviceIdentifier, kSecReturnData как строка: kCFBooleanTrue!, kSecMatchLimit как строка: kSecMatchLimitOne ] результат вар: AnyObject? let status = SecItemCopyMatching (запрос как CFDictionary, &result) если статус == errSecSuccess, пусть данные = результат как? Данные, пусть uuid = String(data: data,coding: .utf8) { вернуть UUID } еще { вернуть ноль } } } /// UUIDModule.swift

import Foundation импортировать React @objc(UUIDModule) класс UUIDModule: NSObject, RCTBridgeModule { статический функциональный модульName() -> String { вернуть «UUIDModule» } @objc func getUUID(_ uuid: String, разрешение преобразователя: @escaping RCTPromiseResolveBlock, отказ отклонителя: @escaping RCTPromiseRejectBlock) -> Void { если пусть сохраненныйUUID = KeychainService.loadUUID() { разрешить ([storedUUID]) } еще { пусть newUUID = UUID().uuidString если KeychainService.saveUUID(newUUID) { разрешить ([новыйUUID]) } еще { ignore("KeychainError", "Не удалось сохранить UUID в связке ключей", ноль) } } } } Это решение тоже не работает.

Есть идеи, как это решить?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»