回答
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
- (NSString*)deviceId {
NSString *udidString;
if (SYSTEM_VERSION_LESS_THAN(@"6.0")) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
udidString = [defaults objectForKey:@"udidKey"];
if (!udidString) {
CFUUIDRef identifierObject = CFUUIDCreate(kCFAllocatorDefault);
// Convert the CFUUID to a string
udidString = (NSString *)CFUUIDCreateString(kCFAllocatorDefault, identifierObject);
[defaults setObject:udidString forKey:@"udidKey"];
[defaults synchronize];
CFRelease((CFTypeRef) identifierObject);
}
} else {
udidString = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
}
return udidString;
}
如果得到警告就行:udidString = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
它意味着Xcode的SDK大于6.0
更少(的Xcode 4.3包含的iOS SDK 5.1,的Xcode 4.5包含的iOS SDK 6.0)
更新Xcode iOS SDK:
- 只需下载App Store上提供的最新Xcode(Apple不提供仅下载SDK的选项)。 如果想保持目前只是版本的Xcode
:
- 下载最新版本的Xcode。
- 副本的iOS SDK库来自:
newestXcode.app /Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
到
oldXcode。应用 /内容/开发者/平台/ iPhoneOS.platform/Developer/SDKs/
重新打开旧的Xcode,这就是它!
可以使用/创建“自己的” UDID:
+(NSString *)getUUID
{
CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
NSString * uuidString = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
CFRelease(newUniqueId);
return uuidString;
}
你应该记住,这种方法会产生不同的ID在每次调用,所以你应该坚持它的一些如何,因此是不与UDID完全相同,但对于大多数用途来说,它甚至更好。
那就是我所做的! (case版本的iOS版本<6.0),但方法CFUUIDCreateString(x,y)为每个调用返回不同的id。所以最好的做法是在NSUserDefaults字典中保存方法的第一个调用(在关闭应用程序并再次打开后保存NSUserDefaults参数)。 – evya 2013-05-13 10:05:53
@evya:1.我没有看到在<6.0中使用过时的UDID的原因,而在6.0中使用了自定义的UDID;只需使用自定义的一个。 2.问题是“什么是替代方案?”,你可以坚持下去,不管你想要什么。3.我也许应该对你的答案进行评论,但是似乎在问题的唯一代码中发布了一个干净的答案对于回答求职者更有用。 – 2013-05-13 11:17:29
- 1. 在JavaScript中生成唯一标识iOS设备的(非UDID)标识符
- 2. NSManagedObject的唯一标识符
- 3. SlideMaster的唯一标识符
- 4. PC的唯一标识符
- 5. Mac的唯一标识符?
- 6. 唯一标识符
- 7. 生成条件唯一标识符
- 8. 唯一号码标识符生成
- 9. 生成唯一标识符作为基于集合的查询
- 10. 为数组中的元素生成'可读'唯一标识符?
- 11. ios的唯一设备标识
- 12. 在iOS中唯一标识设备
- 13. 为iOS设备创建唯一标识符?
- 14. 唯一文件标识符
- 15. XHTML唯一标识符
- 16. 唯一标识符策略
- 17. MySQL唯一标识符
- 18. UITableViewCell唯一标识符?
- 19. 生成std :: string的唯一标识
- 20. 如何从应用程序获取iOS的唯一标识符?
- 21. 什么是组成一个唯一的标识符,如GUID
- 22. 阵营原住民 - RTL在IOS
- 23. 如何为每个设备生成唯一标识符?
- 24. 如何为地址结构生成唯一标识符?
- 25. Vertica中的全局唯一标识符
- 26. 跨表的唯一标识符
- 27. 写脚本的唯一标识符?
- 28. 乱码的唯一标识符SQLite中
- 29. Android手机的唯一标识符
- 30. Flash安装的唯一标识符
尽管你不能在你的应用程序中使用Device UDID,因为它完全被Apple禁止,否则你的应用程序将被拒绝,我已经发布了关于它的细节,你可以阅读它[这里](http://stackoverflow.com/问题/ 16469566/invalid-application-binary/16475078#16475078) – 2013-05-13 08:21:18