2017-07-24 126 views
-3

我想獲得唯一標識符,但我總是得到一個零值。UUID返回零

static NSString* UUID_KEY = @"CDVUUID" 
NSString* app_uuid = [userDefaults stringForKey:UUID_KEY]; 
NSLog(@"udd:%@",app_uuid); 
+0

您從userdefaults得到它,但你有沒有保存它呢? –

+0

你用鑰匙「CDVUUID」保存了什麼嗎? userDefaults不生成UUIDS,所以你問的是如何創建一個UUID? –

回答

1

您只是從Userdefaults中獲取它,它僅用於保存信息並檢索它。它不會生成你的UUID。所以,如果你從來沒有在過去的鑰匙「CDVUUID」救了它,你的代碼將永遠給零,因爲沒有保存在userdefaults關鍵CDVUUID

要生成UUID值 -

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

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

然後,您可以將其保存在userdefaults,然後在以後的階段找回它,當你從userdefaults需要它。

0

它看起來像你從CDVDevice.m複製這段代碼,但你只複製它的一部分。

全部功能,它創建,如果不存在保存一個UUID是:

- (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; 
}