Получение двух разных идентификаторов устройств с одного iphone

Когда я получаю его из itunes, я получаю разные UDID для своего iphone и программно вот так

UDID:String = UIDevice.current.identifierForVendor!.uuidString

В основном я пытаюсь получить уникальный идентификатор для своего iphone, так же, как у нас есть MAC-адрес для телефонов Android.


person Wajdan Ali    schedule 17.12.2017    source источник
comment
Возможный дубликат Уникальный идентификатор устройства iOS для iOS 7.0 и выше   -  person Mo Abdul-Hameed    schedule 17.12.2017
comment
Вы не можете получить UDID программно. identifierForVendor - уникальный идентификатор, но он может измениться, если ваше приложение будет удалено и переустановлено.   -  person Paulw11    schedule 17.12.2017
comment
да, но, как упомянул adarshaU (принятый ответ), мы можем сохранить UDID в связке ключей и сохранить его для устройства, несмотря на переустановку.   -  person Wajdan Ali    schedule 30.12.2017


Ответы (1)


Самый простой способ - решить эту проблему, сохранив идентификатор ForVendor в связке ключей. даже если вы удалите приложение, значение ключа останется неизменным. для этого доступно множество сторонних библиотек. один из них https://github.com/jrendel/SwiftKeychainWrapper.

func getGlobalUniqueIdentifierFromKeyChain()->String{

    let retrievedString: String? = KeychainWrapper.standard.string(forKey: "DeviceId")

    if  retrievedString == nil{
        if let deviceKey  = UIDevice.current.identifierForVendor?.uuidString{
            let _ = KeychainWrapper.standard.set(deviceKey, forKey: "DeviceId")
        }
    }

    if let globalID = KeychainWrapper.standard.string(forKey: "DeviceId"){
        return globalID
    }else{
        return UIDevice.current.identifierForVendor?.uuidString ?? ""
    }
}
person adarshaU    schedule 18.12.2017
comment
после IOS 7 это кажется лучшим подходом. Работает как шарм, спасибо - person Wajdan Ali; 30.12.2017