如何以编程方式获取正确的 iOS 版本?

Posted

技术标签:

【中文标题】如何以编程方式获取正确的 iOS 版本?【英文标题】:How to get the proper iOS version programmatically? 【发布时间】:2015-03-30 12:58:04 【问题描述】:

我想获取用户设备的当前操作系统版本,以便在后端进行一些分析。我试图得到它如下,

[[[UIDevice currentDevice] systemVersion] floatValue]; **//not returning the minor version number**

当我在运行 ios 8.0.2 的 iPhone 上运行测试时,这个 api 会返回 8.000000 作为结果,但我需要确切的 iOS 版本,即 8.0.2

提前感谢任何解决此问题的帮助。

【问题讨论】:

注意“8.0.2”不是数值,是字符串。 How to check iOS version?的可能重复 【参考方案1】:

在 iOS 8 及更高版本中,您可以使用:

[[NSProcessInfo processInfo] operatingSystemVersion]

如果您想检查特定 API 的可用性,那么有比检查操作系统版本更好的方法,如 here 所述。

【讨论】:

【参考方案2】:

你可以用这个得到它,NSString 格式:

[UIDevice currentDevice].systemVersion

新编辑

PS

你改变了你的问题……现在我的回答没有意义了…… 下次添加带有明显编辑的新行,让每个人都了解问题/答案的线索, 请

【讨论】:

解释一下 :)【参考方案3】:

目标 C

// define macro
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

然后这样使用:

if (SYSTEM_VERSION_LESS_THAN(@"10.0"))
   //your code here 

【讨论】:

【参考方案4】:
NSString *osVersion = [[UIDevice currentDevice] systemVersion];

【讨论】:

感谢您提供此代码 sn-p,它可能会提供一些即时帮助。正确的解释将greatly improve 其教育价值通过说明为什么这是解决问题的好方法,并使其对未来有类似但不相同的问题的读者更有用。请编辑您的答案以添加解释,并说明适用的限制和假设。【参考方案5】:

也许不是更优雅的解决方案,但它确实可以完成这项工作,因此您可以在 ObjC 中尝试类似的方法:

- (NumVersion)systemVersion 
    NSArray *_separated = [[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."];
    NumVersion _version =  0, 0, 0, 0 ;
    if (_separated.count > 3) _version.stage = [[_separated objectAtIndex:3] integerValue];
    if (_separated.count > 2) _version.nonRelRev = [[_separated objectAtIndex:2] integerValue];
    if (_separated.count > 1) _version.minorAndBugRev = [[_separated objectAtIndex:1] integerValue];
    if (_separated.count > 0) _version.majorRev = [[_separated objectAtIndex:0] integerValue];
    return _version;

然后:

NumVersion version = [self systemVersion];
NSLog(@"%d, %d, %d, %d", version.majorRev, version.minorAndBugRev, version.nonRelRev, version.stage);

将打印(以我为例):

11, 0, 2, 0

您可以将其转换为更理想的分析格式。

【讨论】:

以上是关于如何以编程方式获取正确的 iOS 版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在 iOS 应用程序中显示目标的版本/内部版本号?

如何在 iOS 7 中以编程方式正确关闭 UIAlertView?

如何以编程方式获取 iOS 设备 MAC 地址

如何以编程方式获取“版本代码”和“型号代码”

我们如何以编程方式检测运行设备的iOS版本? [重复]

如何以编程方式获取 Git 的版本?