如何检测设备的iOS版本的内部版本号(例如13A452)

问题描述:

有没有办法以编程方式检测iOS版本的内部版本号 例如iOS版本9.0.2(13A452)。 我知道如何检测iOS版本,例如:9.0.2。如何检测设备的iOS版本的内部版本号(例如13A452)

是否有任何API来检测13A452?

在此先感谢。

+0

的可能的复制[如何检查IOS版本?(http://*.com/questions/3339722/how-to-check-ios-version) –

+1

此问题特定于识别构建版本而不是iOS版本。我遇到过很多关于如何检测iOS版本的帖子,例如9.0.2。 但找不到任何信息来获取构建版本,即像13A452。 – user1150393

+0

我很好奇什么样的角落案件迫使你检查操作系统的特定版本号。苹果通常建议检查可用的功能(而不是硬编码的操作系统版本号),但我相信你一定有你的理由。 –

我已经想通了。在函数sysctl上使用KERN_OSVERSION返回iOS内部版本号。

想象我会把代码放在任何需要它的地方(运行时工作),因为处理起来有点棘手!

请确认您#include <sys/sysctl.h>

//make sure you `#include <sys/sysctl.h>` 

NSString *ctlKey = @"kern.osversion"; 

BOOL buildValueFound; 
NSString *buildValue; 

size_t size = 0; 

if (sysctlbyname([ctlKey UTF8String], NULL, &size, NULL, 0) == -1) { 

    buildValueFound = NO; 

} else { 

    char *machine = calloc(1, size); 

    sysctlbyname([ctlKey UTF8String], machine, &size, NULL, 0); 
    NSString *ctlValue = [NSString stringWithCString:machine encoding:[NSString defaultCStringEncoding]]; 

    free(machine); 

    buildValue = ctlValue; 

    buildValueFound = YES; 

} 

if (buildValueFound) { 
    NSLog(@"%@", buildValue); 
} else { 
    NSLog(@"No build value found"); 
} 
+0

感谢张贴代码。 – user1150393