什么是iOS 7中的UDID或UUID副本

时间:2013-10-30 07:01:32

标签: ios ios7

问题是,一旦我生成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;

2 个答案:

答案 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解决了这个问题。 链接:

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

正如我在那里看到的那样,广告标识是

  

“每个设备唯一的字母数字字符串,......”

为此,我使用它作为唯一标识符(虽然它用于 提供广告)。

我的代码是:

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