tutorial - ¿Cómo obtener una ID de dispositivo única en Swift?
swift xcode (7)
¿Cómo puedo obtener una identificación única de dispositivos en Swift?
Necesito una identificación para usar en la base de datos y como clave API para mi servicio web en mi aplicación social. Algo para realizar un seguimiento del uso diario de estos dispositivos y limitar sus consultas a la base de datos.
¡Gracias!
He intentado con
let UUID = UIDevice.currentDevice().identifierForVendor?.UUIDString
en lugar
let UUID = NSUUID().UUIDString
y funciona.
Para el último código de trabajo de Swift 3.X , uso fácil;
let deviceID = UIDevice.current.identifierForVendor!.uuidString
print(deviceID)
Puede usar la comprobación de dispositivos (en Swift 4) Documentación de Apple
func sendEphemeralToken() {
//check if DCDevice is available (iOS 11)
//get the **ephemeral** token
DCDevice.current.generateToken {
(data, error) in
guard let data = data else {
return
}
//send **ephemeral** token to server to
let token = data.base64EncodedString()
//Alamofire.request("https://myServer/deviceToken" ...
}
}
Uso típico:
Por lo general, utiliza las API de DeviceCheck para asegurarse de que un nuevo usuario no haya canjeado una oferta con un nombre de usuario diferente en el mismo dispositivo.
La acción del servidor necesita:
más del artículo de Santosh Botre - Identificador único para dispositivos iOS
Su servidor asociado combina este token con una clave de autenticación que recibe de Apple y utiliza el resultado para solicitar acceso a los bits por dispositivo.
Puedes usar esto (Swift 3):
UIDevice.current.identifierForVendor!.uuidString
Para versiones anteriores:
UIDevice.currentDevice().identifierForVendor
o si quieres una cadena:
UIDevice.currentDevice().identifierForVendor!.UUIDString
Ya no hay una manera de identificar de forma exclusiva un dispositivo después de que el usuario desinstaló las aplicaciones.
La documentación dice:
El valor en esta propiedad permanece igual mientras la aplicación (u otra aplicación del mismo proveedor) está instalada en el dispositivo iOS. El valor cambia cuando el usuario elimina todas las aplicaciones de ese proveedor del dispositivo y posteriormente reinstala una o más de ellas.
También puede leer este artículo de Mattt Thompson para obtener más detalles:
http://nshipster.com/uuid-udid-unique-identifier/
Actualización para Swift 4.1 , deberá usar:
UIDevice.current.identifierForVendor?.uuidString
Swift 2.2
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let userDefaults = NSUserDefaults.standardUserDefaults()
if userDefaults.objectForKey("ApplicationIdentifier") == nil {
let UUID = NSUUID().UUIDString
userDefaults.setObject(UUID, forKey: "ApplicationIdentifier")
userDefaults.synchronize()
}
return true
}
//Retrieve
print(NSUserDefaults.standardUserDefaults().valueForKey("ApplicationIdentifier")!)
class func uuid(completionHandler: @escaping (String) -> ()) {
if let uuid = UIDevice.current.identifierForVendor?.uuidString {
completionHandler(uuid)
}
else {
// If the value is nil, wait and get the value again later. This happens, for example, after the device has been restarted but before the user has unlocked the device.
// https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor?language=objc
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
uuid(completionHandler: completionHandler)
}
}
}