我在代码中写了这些行:
CFUUIDRef identifier = CFUUIDCreate(NULL);
NSString *identifierString = (NSString*)CFUUIDCreateString(NULL, identifier);
NSLog(@"%@",identifierString);
[self setValue:identifierString forKey:kParamNameDeviceId];
但每次应用启动时都会调用这些行。
现在我的问题是,如何实现以下目标?
简而言之,我希望在应用程序的整个生命周期中创建一个CFUUID并使用它(直到它被卸载)。
答案 0 :(得分:8)
最简单的方法是将其存储在NSUserDefaults
中NSString *identifierString = [[NSUserDefaults standardUserDefaults] objectForKey:@"myID"];
if (!identifierString) {
CFUUIDRef identifier = CFUUIDCreate(NULL);
identifierString = (NSString*)CFUUIDCreateString(NULL, identifier);
[[NSUserDefaults standardUserDefaults] setObject:identifierString forKey:@"myID"];
}
NSLog(@"%@",identifierString);
/* ... */
答案 1 :(得分:6)
创建一次。在NSUSerDefaults中添加它并检查在创建UUID之前是否已存储UUID。简单的伪代码,
NSString *CFUUID = nil;
if (![[NSUserDefaults standardUserDefaults] objectForKey:@"UUID"]) {
//create CFUUDID.
[[NSUserDefaults standardUserDefaults] setObject:CFUUID forKey:@"UUID"];
}
else
{
CFUUID = [[NSUserDefaults standardUserDefaults] objectForKey:@"UUID"];
}
答案 2 :(得分:3)
如果您要在服务器上存储标识符以跟踪有关唯一身份用户的重要信息,那么我建议您将 identifierString 存储在" KeyChain"即使您的应用程序已被用户删除,它也会保留该标识符。
NSUserDefaults 保留数据,直到删除应用。即使应用被删除,钥匙串也会保留数据。
我有类似的情况,所以如果你的情况与我的情况相同,这可能会有所帮助。