ios8 get - Come ottenere un ID dispositivo univoco in Swift?





imei identifierforvendor (7)


Puoi usare questo (Swift 3):

UIDevice.current.identifierForVendor!.uuidString

Per le versioni precedenti:

UIDevice.currentDevice().identifierForVendor

o se vuoi una stringa:

UIDevice.currentDevice().identifierForVendor!.UUIDString


Non esiste più un modo per identificare univocamente un dispositivo dopo che l'utente ha disinstallato le app. La documentazione dice:

Il valore in questa proprietà rimane lo stesso mentre l'app (o un'altra app dello stesso fornitore) è installata sul dispositivo iOS. Il valore cambia quando l'utente cancella tutte le app del fornitore dal dispositivo e successivamente ne reinstalla una o più.


Si consiglia inoltre di leggere questo articolo di Mattt Thompson per ulteriori dettagli:
http://nshipster.com/uuid-udid-unique-identifier/

Come posso ottenere un ID univoco per i dispositivi in ​​Swift?

Ho bisogno di un ID da utilizzare nel database e come chiave API per il mio servizio web nella mia app social. Qualcosa per tenere traccia di questo dispositivo uso quotidiano e limitare le sue query al database.

Grazie!




Per Swift 3.X Ultimo codice di lavoro, Facilmente utilizzabile;

   let deviceID = UIDevice.current.identifierForVendor!.uuidString
   print(deviceID)



per swift 4.1 lasciare UIDeviceX = UIDevice.current.identifierForVendor! .uuidString print ("UIDeviceX: (UIDeviceX)")




È possibile utilizzare la documentazione Apple di devicecheck (in Swift 4)

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 tipico:

In genere, si utilizzano le API DeviceCheck per garantire che un nuovo utente non abbia già utilizzato un'offerta con un nome utente diverso sullo stesso dispositivo.

I bisogni dell'azione del server:

Vedi WWDC 2017 - Sessione 702

altro dall'articolo di Santosh Botre - Identificatore univoco per i dispositivi iOS

Il server associato combina questo token con una chiave di autenticazione ricevuta da Apple e utilizza il risultato per richiedere l'accesso ai bit per dispositivo.




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")!)



Ho provato con

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

anziché

let UUID = NSUUID().UUIDString

e funziona




Confermato da un ingegnere Apple al laboratorio Swift questa mattina al WWDC che al momento non ci sono #pragma o equivalenti al momento, lo considerano un bug, e arriverà presto, quindi spero che la beta 2 sia indovinata.

Ad ogni modo, è sulla strada giusta.

Xcode ora supporta // MARK :, // TODO: e // punti di riferimento FIXME per annotare il tuo codice e li elenca nella barra di scorrimento





swift ios8 uuid uniqueidentifier