答案 0 :(得分:5)
这就是我所做的,这也是Apple的建议
不要使用uniqueIdentifier属性。要创建特定于应用程序的唯一标识符,可以调用CFUUIDCreate函数来创建UUID,并使用NSUserDefaults类将其写入默认数据库。
- (NSString *)getUUID {
NSString *string = [[NSUserDefaults standardUserDefaults] objectForKey:@"deviceUUID"];
if (string == nil) {
CFUUIDRef uuid;
CFStringRef uuidStr;
uuid = CFUUIDCreate(NULL);
uuidStr = CFUUIDCreateString(NULL, uuid);
string = [NSString stringWithFormat:@"%@", uuidStr];
[[NSUserDefaults standardUserDefaults] setObject:string forKey:@"deviceUUID"];
[[NSUserDefaults standardUserDefaults] synchronize];
CFRelease(uuidStr);
CFRelease(uuid);
}
return string;
}
答案 1 :(得分:1)
我们倾向于使用在网络上普及的cookie方法来解决这个问题,其中适用相同的规则。基本上,您的应用应该检查您的cookie是否存在;如果它不存在,请向服务器询问一个并在本地保留它。然后对每个请求发送标识符。服务器的工作是为每个新设备生成足够不同的标识符。
通过这种方式,您仍然可以跟踪个人用户,而不是通过了解他们所需的更多信息。
答案 2 :(得分:-2)
我用这个:
//create a 30 digits random alphanumeric string
NSString *symbols = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
NSMutableString *randStr = [NSMutableString stringWithCapacity: 30];
for (int i=0; i<30; i++)
[randStr appendFormat: @"%C", [symbols characterAtIndex: rand()%[symbols length]]];
NSLog(@"Pseudo UUID = %@", randStr);
获得重复的可能性非常小。
答案 3 :(得分:-3)
您可以使用UDID发送服务器。它是每个设备的唯一ID。如下所示,并将其发送到服务器。
NSString *udid=[[UIDevice currentDevice]uniqueIdentifier];