iOS 获取iPhone机型和iOS系统版本号

在iOS开发中,有时需要获取用户设备的具体型号和当前的系统版本号。本文将介绍如何通过代码获取iPhone机型和iOS系统版本号,并提供相应的示例代码。

1. 获取iPhone机型

获取iPhone机型可以通过读取设备的模型标识符来实现。每个iPhone型号都有一个唯一的模型标识符,通过比对标识符和已知的型号对应关系,可以确定当前设备的具体型号。

iOS提供了UIDevice类来获取关于设备的信息。通过调用[UIDevice currentDevice].model方法,可以获取到设备的模型标识符。

示例代码如下:

#import <UIKit/UIKit.h>

NSString *getiPhoneModel() {
    struct utsname systemInfo;
    uname(&systemInfo);
    NSString *model = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
    return model;
}

int main(int argc, char * argv[]) {
    @autoreleasepool {
        NSString *model = getiPhoneModel();
        NSLog(@"iPhone Model: %@", model);
    }
    return 0;
}

运行以上代码,可以在控制台输出当前设备的模型标识符。

为了方便使用,可以将模型标识符和对应的设备型号进行映射。下面是一份常见的iPhone型号对照表:

模型标识符 设备型号
iPhone1,1 iPhone 1G
iPhone1,2 iPhone 3G
iPhone2,1 iPhone 3GS
iPhone3,1 iPhone 4
iPhone3,2 iPhone 4
iPhone3,3 iPhone 4 (CDMA)
iPhone4,1 iPhone 4S
iPhone5,1 iPhone 5 (GSM)
iPhone5,2 iPhone 5 (Global)
iPhone5,3 iPhone 5c (GSM)
iPhone5,4 iPhone 5c (Global)
iPhone6,1 iPhone 5s (GSM)
iPhone6,2 iPhone 5s (Global)
iPhone7,1 iPhone 6 Plus
iPhone7,2 iPhone 6
iPhone8,1 iPhone 6s
iPhone8,2 iPhone 6s Plus
iPhone8,4 iPhone SE
iPhone9,1 iPhone 7 (GSM)
iPhone9,2 iPhone 7 Plus (GSM)
iPhone9,3 iPhone 7 (Global)
iPhone9,4 iPhone 7 Plus (Global)
iPhone10,1 iPhone 8 (GSM)
iPhone10,2 iPhone 8 Plus (GSM)
iPhone10,3 iPhone X (GSM)
iPhone10,4 iPhone 8 (Global)
iPhone10,5 iPhone 8 Plus (Global)
iPhone10,6 iPhone X (Global)
iPhone11,2 iPhone XS
iPhone11,4 iPhone XS Max
iPhone11,6 iPhone XS Max (China)
iPhone11,8 iPhone XR
iPhone12,1 iPhone 11
iPhone12,3 iPhone 11 Pro
iPhone12,5 iPhone 11 Pro Max

可以使用一个字典来进行映射:

NSDictionary *iPhoneModels() {
    return @{
        @"iPhone1,1": @"iPhone 1G",
        @"iPhone1,2": @"iPhone 3G",
        @"iPhone2,1": @"iPhone 3GS",
        // ...
        @"iPhone12,5": @"iPhone 11 Pro Max"
    };
}

NSString *getiPhoneModel() {
    struct utsname systemInfo;
    uname(&systemInfo);
    NSString *model = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
    NSDictionary *models = iPhoneModels();
    return models[model] ?: model;
}

运行以上代码,可以在控制台输出当前设备的具体型号。

2. 获取iOS系统版本号

获取iOS系统版本号可以通过读取系统的版本号来实现。iOS提供了UIDevice类的systemVersion属性,可以直接获取到当前设备的系统版本号。

示例代码如下:

#import <UIKit/UIKit