问题是,一旦我生成UUID
它为我工作。但是如果我/用户删除了应用程序,那么UUID
与我之前生成的不同。如果我们使用uuid作为标识符,那么这里没有唯一性。请帮我解决这个问题。如果重新安装应用程序,我如何获得相同的uuid或任何字符串。
提前谢谢..
我正在使用这种方法:
NSString *udid;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0"))
udid = [UIDevice currentDevice].identifierForVendor.UUIDString;
else
udid = [UIDevice currentDevice].uniqueIdentifier;
答案 0 :(得分:2)
首先,查看NSHiplster http://nshipster.com/uuid-udid-unique-identifier/
上这篇内容丰富的文章这应该适合你:
NSString *UUIDString = nil;
if ([[UIDevice currentDevice].systemVersion floatValue] >= 6.0) {
UUIDString = [[NSUUID UUID] UUIDString];
} else {
CFUUIDRef UUID = CFUUIDCreate(NULL);
UUIDString = CFBridgingRelease(CFUUIDCreateString(NULL, UUID));
}
答案 1 :(得分:1)
我通过使用advertisingIdentifier解决了这个问题。 链接:
正如我在那里看到的那样,广告标识是
“每个设备唯一的字母数字字符串,......”
为此,我使用它作为唯一标识符(虽然它用于 提供广告)。
我的代码是:
-(NSString*)UniqueAppId
{
NSString *Appname = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
NSString *strApplicationUUID = [SSKeychain passwordForService:Appname account:@"manab"];
if (strApplicationUUID == nil)
{
strApplicationUUID = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
[SSKeychain setPassword:strApplicationUUID forService:Appname account:@"manab"];
}
return strApplicationUUID;
}
并在需要时调用它
[self UniqueAppId];