19

唯一注册iOS设备的最佳方式是什么,不受未来Apple限制的限制?

我目前注册iOS设备的方法(基本上是唯一标识设备)是我使用iOS设备的UDID来识别它并注册它,然后在识别它之后执行必要的操作。

问题是 UIDevice uniqueIdentifier 属性已被弃用。我知道有一些解决方法(如本问题中所讨论的)。

一种可能性是使用 iOS 设备的 MAC 地址。但是,我觉得苹果可能会在未来的某个时候限制对这些信息的访问。

有没有其他方法(除了访问 MAC 地址)来识别 iOS 设备,我们将来可以依赖它?

4

5 回答 5

7

Using Apple's preferred method of generating a CFUUIDRef is probably the better solution as I feel the MAC address may be removed in the future as well. If you use this and save it to your NSUserdefaults you will have it persist unless the user deletes the app. If you want to have a generated unique ID that you can share between apps or persist between installs you should look at using the UIPasteboard and saving your generated UID with a key that you share between apps.

//Create a unique id as a string
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);

//create a new pasteboard with a unique identifier
UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@"youruniquestring" create:YES];

[pasteboard setPersistent:YES];

//save the unique identifier string that we created earlier
[pasteboard setString:((__bridge NSString*)string)];


 //accessing it
UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@"youruniquestring" create:NO];
NSLog([pasteboard string]);

I have written a brief tutorial here but its basically the lines above: http://www.roostersoftstudios.com/2012/03/26/a-way-to-share-data-between-apps-on-a-given-ios-device/

于 2012-05-08T03:39:09.940 回答
4

除非您的应用程序用于管理我的 Apple 设备,否则这是错误的方法。作为用户,我不想让你知道我使用的是哪种设备。我希望你能认出我,无论我使用什么设备。我希望能够更换有缺陷的设备。Apple越来越多地限制对这些信息的访问。

[编辑] 我看不出 MAC 地址是如何工作的。我的 iOS 设备可以有多个。

于 2012-05-11T07:17:47.753 回答
2

另一种选择是动态生成您自己的 UUID。

CFUUIDRef uuid = CFUUIDCreate(NULL); 
CFStringRef generatedUuidStr = CFUUIDCreateString(NULL, uuid);
CFRelease(uuid);
NSString* uuidStr = [(NSString*)generatedUuidStr autorelease];

您可以在 NSUserDefaults 中保留此 UUID 以实现基于安装的唯一性。如果基于设备的唯一性确实是最重要的事情(以便在卸载和重新安装后保留 ID),您将需要一种机制来将 ID 保留在设备上。我认为您可以考虑使用钥匙串来保留该 ID,该 ID 应该在应用程序卸载之后仍然存在。您甚至可以在将 UUID 添加到钥匙串时使用访问组,这样您就可以拥有一套使用相同 UUID 的应用程序。

有关保存钥匙串项目和检索它们的更多信息,请参阅苹果的安全框架参考。

http://developer.apple.com/library/ios/#DOCUMENTATION/Security/Reference/SecurityFrameworkReference/_index.html

于 2012-05-04T18:39:17.613 回答
1

我见过的最好的方法是使用钥匙串。您可以使用CFUUIDCreateString函数生成 UUID 并将其存储在钥匙串中。此数据在安装和从备份恢复之间保留在设备中。

于 2012-05-10T16:10:22.713 回答
-2

使用设备 Mac 地址。我想它就像你需要的一样独特。

如何以编程方式获取 iphone 的 MAC 地址

于 2012-04-25T16:16:45.697 回答