我想獲得唯一標識符,但我總是得到一個零值。UUID返回零
static NSString* UUID_KEY = @"CDVUUID"
NSString* app_uuid = [userDefaults stringForKey:UUID_KEY];
NSLog(@"udd:%@",app_uuid);
我想獲得唯一標識符,但我總是得到一個零值。UUID返回零
static NSString* UUID_KEY = @"CDVUUID"
NSString* app_uuid = [userDefaults stringForKey:UUID_KEY];
NSLog(@"udd:%@",app_uuid);
您只是從Userdefaults中獲取它,它僅用於保存信息並檢索它。它不會生成你的UUID。所以,如果你從來沒有在過去的鑰匙「CDVUUID」救了它,你的代碼將永遠給零,因爲沒有保存在userdefaults關鍵CDVUUID
要生成UUID值 -
NSString* app_uuid = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
或
NSString *UUID = [[NSUUID UUID] UUIDString];
然後,您可以將其保存在userdefaults,然後在以後的階段找回它,當你從userdefaults需要它。
它看起來像你從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;
}
您從userdefaults得到它,但你有沒有保存它呢? –
你用鑰匙「CDVUUID」保存了什麼嗎? userDefaults不生成UUIDS,所以你問的是如何創建一個UUID? –