J'ai besoin d'obtenir deviceUUID à partir d'un téléphone au format NSString. Maintenant, j'ai ceci:
NSString *deviceId = [UIDevice currentDevice].identifierForVendor;
Parce que ce que j'avais avant, c'était:
NSString *deviceId = [UIDevice currentDevice].uniqueIdentifier;
Me donne maintenant une erreur.
Mais avec la première phrase, j'ai reçu une alerte:
Incompatible pointer types initializing 'NSString *' with an expression of type 'NSUUID *'
Comme l'erreur vous l'indique, identifierForVendor
renvoie un objet de classe NSUUID
, pas une chaîne NSS.
Si vous avez besoin d'une NSString, utilisez ceci:
NSUUID *identifierForVendor = [[UIDevice currentDevice] identifierForVendor];
NSString *deviceId = [identifierForVendor UUIDString];
Pour tous ceux qui recherchent comment convertir NSUUID en NSString
ObjC
NSString *uuid = [[NSUUID UUID] UUIDString];
Swift
NSUUID().UUIDString
Swift 3
UUID().uuidString
EDITE: Comme ( OP condition Je rouvre ma réponse supprimée et je mentionne ici @ Matthias's la réponse est correcte et en utilisant le code suivant, vous obtenez un nouveau device_id à chaque fois que vous exécutez ce code.
Utilisez le code suivant:
CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
NSString *uuidString = (NSString *)CFBridgingRelease(CFUUIDCreateString(NULL,uuidRef));
CFRelease(uuidRef);
NSLog(@"%@", uuidString);