iOS版本更改时,唯一标识符不应更改

时间:2013-12-06 06:00:41

标签: ios cocoa

我正在开发一个使用device unique identifier to register device with server的应用程序。 我使用MacAddress来获取设备的唯一标识符,但在iOS7中它将返回相同的内容(所有设备都是静态的)。 我发现其他替代

NSUUID *vendorId = [[UIDevice currentDevice] identifierForVendor];

但随着iOS设备的改变,这将会改变。 所以任何人都可以建议我some unique identifier which will not change如果iOS版本更改它应该对所有iOS版本(iOS7,iOS6)都相同。

4 个答案:

答案 0 :(得分:2)

有一个简单的答案:这是不可能的。在这里,您可以对标识符进行概述:The Developer’s Guide to Unique Identifiers

enter image description here

答案 1 :(得分:0)

只需将UUID存储到钥匙串中即可。 sskeychain是指https://github.com/samsoffes/sskeychain

代码如下^^

NSString *identifier = [SSKeychain passwordForService:kSSToolkitTestsServiceName account:kSSToolkitTestsAccountName];

if (identifier != nil && [identifier length] > 0) {
    return identifier;
}

identifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

[SSKeychain setPassword:identifier forService:kSSToolkitTestsServiceName account:kSSToolkitTestsAccountName];
return identifier;

答案 2 :(得分:0)

不幸的是,Apple不允许应用程序以唯一方式识别设备(因为它违反了用户隐私)。所以你要么留下了供应商ID或广告ID ..你可以尝试的另一件事是写一个提供的Web服务首次登录时您的应用程序的唯一ID,您将把它存储在设备的密钥链或数据库中..

答案 3 :(得分:0)

Apple不允许使用Device's UDID来识别用户。所以你可以用其他方式来做。

不是将UDID发送到服务器,而是在服务器上创建唯一的ID,并将该ID放在应用程序中以识别用户。通过这种方式,您不会违反Apple的指导原则,并且可以通过此解决iOS版本变化的问题。