1

问题是一旦我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;
4

2 回答 2

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));
}
于 2013-10-30T07:14:30.237 回答
1

我已经通过使用广告标识符解决了这个问题。关联:

https://developer.apple.com/library/ios/documentation/AdSupport/Reference/ASIdentifierManager_Ref/ASIdentifierManager.html#jumpTo_3

正如我在那里看到的,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];
于 2014-02-19T09:53:15.007 回答