从同一个 iphone 获取两个不同的设备 ID
Getting two different device IDs from same iphone
我的 iphone 收到不同的 UDID from itunes 并且以编程方式像这样
UDID:String = UIDevice.current.identifierForVendor!.uuidString
基本上我正在尝试为我的 iphone 获取一个唯一标识符,就像我们有 android 电话的 mac 地址一样。
一种最简单的方法是通过将 identifierForVendor 存储在钥匙串中来解决此问题。即使您卸载应用程序,密钥的值仍然保持不变。许多第三方库可用于执行此操作。其中之一 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 ?? ""
}
}
我的 iphone 收到不同的 UDID from itunes 并且以编程方式像这样
UDID:String = UIDevice.current.identifierForVendor!.uuidString
基本上我正在尝试为我的 iphone 获取一个唯一标识符,就像我们有 android 电话的 mac 地址一样。
一种最简单的方法是通过将 identifierForVendor 存储在钥匙串中来解决此问题。即使您卸载应用程序,密钥的值仍然保持不变。许多第三方库可用于执行此操作。其中之一 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 ?? ""
}
}