如何以编程方式检测 iOS 设备
Posted
技术标签:
【中文标题】如何以编程方式检测 iOS 设备【英文标题】:How to detect iOS device programmatically 【发布时间】:2012-06-18 11:31:43 【问题描述】:我需要知道哪个 ios 设备当前正在运行应用程序(更确切地说,我需要知道的是设备 armv6 还是 armv7)。 UIUserInterfaceIdiomPad() 无法检查设备是 iPhone4S 还是 iPhone3G。有可能吗?
【问题讨论】:
只是出于好奇,为什么要知道是armv6还是armv7? 我在我的项目中添加了一些功能,它会导致 armv6 设备 (iPhone3G) 上的崩溃。我知道,问题出在处理器的架构上,但还不知道如何解决它。所以我决定做一个开关,在我试图让应用在所有设备上运行时关闭旧设备上的这个功能 【参考方案1】:下载https://github.com/erica/uidevice-extension(UIDevice-Hardware 类)你可以使用这些:
[UIDevice currentDevice] platformType] // returns UIDevice4GiPhone
[[UIDevice currentDevice] platformString] // returns @"iPhone 4G"
或者检查它的视网膜
+ (BOOL) isRetina
if([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
return [[UIScreen mainScreen] scale] == 2.0 ? YES : NO;
return NO;
或者查看iOS版本
+ (BOOL) isIOS5
NSString *os5 = @"5.0";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
// currSysVer = @"5.0.1";
if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedAscending) //lower than 4
return NO;
else if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedDescending) //5.0.1 and above
return YES;
else // IOS 5
return YES;
return NO;
【讨论】:
谢谢!那和@Michael Dautermann 的答案正是我所需要的! 嗯,你没有说 -platformString 是来自 there 的 uidevice 的一个类别;) -1[[UIDevice currentDevice] platformString]
对我不起作用。
我忘了说你必须下载这个github.com/erica/uidevice-extension
撤销了我的 -1 并编辑了您的帖子以在顶部发布带有代码块的 url(这样一目了然更有帮助)。【参考方案2】:
如果你真的想知道(在运行时)你是在 arm6 还是 arm7 上运行,你可以使用“NXGetArchInfoFromCPUType
”(much more detail is available in the accepted answer to this question)。
否则,您可以使用 platformType 或 platformString,正如我们快速回答的朋友 Omar 建议的那样(并向他 +1!)。
【讨论】:
我说的有侵略性吗?我的意思是“该死,你回答得超级快”。可能再过一个月左右,你就会在积分方面赶上我。 感谢您的链接,这将非常有帮助!顺便说一句,你们俩都回答得很快 @MichaelDautermann 我希望我能达到 10K 感谢您的鼓励 :) ,medvedNick 不客气以上是关于如何以编程方式检测 iOS 设备的主要内容,如果未能解决你的问题,请参考以下文章