2017-07-24 3 views
-3

Ich versuche, die eindeutige Kennung zu bekommen, aber ich bekomme immer einen Nullwert.UUID gibt null zurück

+0

Sie erhalten es von userdefaults aber haben Sie jemals dort gespeichert? –

+0

Haben Sie etwas mit dem Schlüssel "CDVUUID" gespeichert? userDefaults generieren UUIDS nicht, also fragen Sie, wie eine UUID erstellt wird? –

Antwort

1

Sie erhalten es nur von Userdefaults, die nur verwendet wird, um Informationen zu speichern und abzurufen. Es wird nicht Ihre UUID generieren. Also, wenn Sie es noch nie mit der Taste „CDVUUID“ gespeichert haben in der Vergangenheit wird der Code immer gleich Null geben, da es keinen Wert in userdefaults für Schlüssel CDVUUID

zu generieren UUID gespeichert ist -

NSString* app_uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; 

oder

NSString *UUID = [[NSUUID UUID] UUIDString]; 

Sie können es in Userdefaults dann speichern und sie dann zu einem späteren Zeitpunkt abgerufen werden, wenn Sie es von userdefaults benötigen.

0

Es sieht so aus, als hätten Sie diesen Code von CDVDevice.m kopiert, aber Sie haben nur einen Teil davon kopiert.

Die gesamte Funktion, die eine UUID und spart schafft, wenn man nicht existiert, ist:

- (NSString*)uniqueAppInstanceIdentifier:(UIDevice*)device 
{ 
    NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults]; 
    static NSString* UUID_KEY = @"CDVUUID"; 

    // Check user defaults first to maintain backwards compaitibility with previous versions 
    // which didn't user identifierForVendor 
    NSString* app_uuid = [userDefaults stringForKey:UUID_KEY]; 
    if (app_uuid == nil) { 
     if ([device respondsToSelector:@selector(identifierForVendor)]) { 
      app_uuid = [[device identifierForVendor] UUIDString]; 
     } else { 
      CFUUIDRef uuid = CFUUIDCreate(NULL); 
      app_uuid = (__bridge_transfer NSString *)CFUUIDCreateString(NULL, uuid); 
      CFRelease(uuid); 
     } 

     [userDefaults setObject:app_uuid forKey:UUID_KEY]; 
     [userDefaults synchronize]; 
    } 

    return app_uuid; 
}