我想获得当前用户设备的os版本,以便在后端进行一些分析。我想尝试如下,
[[[UIDevice currentDevice] systemVersion] floatValue]; **//not returning the minor version number**
当我在拥有iOS 8.0.2的iPhone上运行测试时,这个api会返回8.000000作为结果,但我需要的是8.0.2的确切iOS版本
提前了解解决此问题的任何帮助。
答案 0 :(得分:13)
在iOS 8及更高版本中,您可以使用:
[[NSProcessInfo processInfo] operatingSystemVersion]
如果您想检查特定API的可用性,那么有一种比检查操作系统版本更好的方法,如here所述。
答案 1 :(得分:7)
你可以用NSString格式得到它:
[UIDevice currentDevice].systemVersion
新编辑
PS
你改变了你的问题......现在我的答案已经没有了解...... 下次添加带有明显编辑的新行,让大家了解问题/答案的主题, 请
答案 2 :(得分:1)
I know i could have added some of my code to it but i am only able to find of ionic 2
答案 3 :(得分:0)
目标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 :(得分:0)
也许不是更优雅的解决方案,但它绝对能胜任,所以你可以在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
您可以为您的分析转换为更理想的格式。