【发布时间】:2014-12-03 16:21:08
【问题描述】:
我已经使用以下方法大约一个月了,没有问题。即使卸载应用程序后,设备 ID 仍保持不变。最近我注意到我的设备 ID 发生了变化。我最近在 Xcode6 上做了很多应用程序的构建。这可能是一个原因吗?我希望我能确切地知道它是什么时候改变的。这让我大吃一惊。当应用进入应用商店时,我有什么需要担心的吗?也许这只是一个 Xcode 构建问题?我只是在寻找一种简单的方法来保证唯一的设备 ID。我会使用advertisingIdentifer,但我听说将其用于其他目的,然后广告将被应用商店拒绝。代码如下:
+ (NSString *)getUserID
{
NSString *Appname = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
NSString *retrieveuuid = [SSKeychain passwordForService:Appname account:@"user"];
if(retrieveuuid == NULL)
{
CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
retrieveuuid = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
CFRelease(newUniqueId);
[SSKeychain setPassword:retrieveuuid forService:Appname account:@"user"];
}
NSLog(@"%@", retrieveuuid);
return retrieveuuid;
}
【问题讨论】:
-
作为旁注:更好的选择是
-[UIDevice identifierForVendor]。见the docs。 -
可能你已经重启了你的设备。
-
@Riley 据我所知,如果他们卸载我的所有应用程序,identifierForVendor 将会改变。当他们卸载我的应用程序时,我不希望 id 改变。
-
@user4233467 是的,我相信这是真的。我不确定你想要的东西是否存在(我也不确定它是否不存在——我只是不知道)。
标签: ios xcode uniqueidentifier