什么是唯一注册iOS设备的最佳方式,它不会受到未来苹果限制的限制?
我目前注册iOS设备的方法(基本上是唯一地标识设备)是使用iOS设备的UDID来标识它并注册它,然后在识别它之后执行必要的操作。
问题是UIDevice uniqueIdentifier属性已被弃用。据我所知,有一些解决方法(如this question中所述)。
一种可能是使用iOS设备的介质访问控制地址。然而,我觉得苹果可能也会在未来的某个时候限制对这些信息的访问。
除了访问MAC地址之外,还有没有其他方法来识别iOS设备,我们将来可以依赖它?
发布于 2012-05-08 11:39:10
使用苹果公司首选的生成CFUUIDRef的方法可能是更好的解决方案,因为我觉得未来可能也会删除MAC地址。如果您使用此应用程序并将其保存到您的NSUserdefaults中,则除非用户删除该应用程序,否则它将保持不变。如果你想要一个生成的唯一ID,你可以在应用程序之间共享,或者在安装之间保存,你应该考虑使用UIPasteboard,并将生成的UID保存为在应用程序之间共享的密钥。
//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]);
我在这里写了一个简短的教程,但基本上是上面的几行:http://www.roostersoftstudios.com/2012/03/26/a-way-to-share-data-between-apps-on-a-given-ios-device/
发布于 2012-05-05 02:39:18
另一种选择是动态生成您自己的UUID。
CFUUIDRef uuid = CFUUIDCreate(NULL);
CFStringRef generatedUuidStr = CFUUIDCreateString(NULL, uuid);
CFRelease(uuid);
NSString* uuidStr = [(NSString*)generatedUuidStr autorelease];
您可以将此UUID保存在NSUserDefaults中,以实现基于安装的唯一性。如果基于设备的唯一性确实是最重要的(这样在卸载和重新安装之后id仍然存在),那么您将需要一种机制来在设备上持久存储ID。我认为你可以考虑使用Keychain来保存那个ID,它应该在应用卸载之后仍然存在。您甚至可以在将UUID添加到密钥链时使用访问组,这样您就可以拥有一套使用相同UUID的应用程序。
有关保存和检索keychain项的更多信息,请参阅苹果的安全框架参考。
发布于 2012-04-26 00:16:46
使用设备的Mac地址。我想这是你所需要的最独特的东西。
https://stackoverflow.com/questions/10319275
复制相似问题