获取iOS设备型号,目前所有iOS设备

简介

获取iOS设备型号,目前所有iOS设备皆可识别

下面是.h文件 声明这个返回值为NSString的类方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// GetDeviceModel.h
// Created by LiynXu on 15/11/10.
// Copyright © 2015年 LiynXu. All rights reserved.
// xxl652170427@163.com
#import <Foundation/Foundation.h>
@interface GetDeviceModel : NSObject
/*
获取设备描述
*/
+ (NSString *)getCurrentDeviceModelDescription;
/*
由获取到的设备描述,来匹配设备型号
*/
+ (NSString *)getCurrentDeviceModel;
@end

返回值为NSString的类方法

获取设备描述

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
+ (NSString *)getCurrentDeviceModelDescription{
int mib[2];
size_t len;
char *machine;
mib[0] = CTL_HW;
mib[1] = HW_MACHINE;
sysctl(mib, 2, NULL, &len, NULL, 0);
machine = malloc(len);
sysctl(mib, 2, machine, &len, NULL, 0);
NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
free(machine);
return platform;
}

由获取到的设备描述,来匹配设备型号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
+ (NSString *)getCurrentDeviceModel{
NSString *platform = [GetDeviceModel getCurrentDeviceModelDescription];
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G";
if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4";
if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4";
if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5";
if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c";
if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c";
if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s";
if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s";
if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6S";
if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6S Plus";
if ([platform isEqualToString:@"iPhone9,1"]) return @"iPhone 7 A1660";
if ([platform isEqualToString:@"iPhone9,2"]) return @"iPhone 7 Plus A1661";
if ([platform isEqualToString:@"iPhone9,3"]) return @"iPhone 7 A1778";
if ([platform isEqualToString:@"iPhone9,4"]) return @"iPhone 7 Plus A1784";
if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G";
if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G";
if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G";
if ([platform isEqualToString:@"iPad1,1"]) return @"iPad 1G";
if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini 1G";
if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini 1G";
if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini 1G";
if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3";
if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3";
if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3";
if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4";
if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4";
if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4";
if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air";
if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air";
if ([platform isEqualToString:@"iPad4,3"]) return @"iPad Air";
if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini 2G ";
if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini 2G ";
if ([platform isEqualToString:@"iPad4,6"]) return @"iPad Mini 2G ";
if ([platform isEqualToString:@"iPad4,7"]) return @"iPad Mini 3 ";
if ([platform isEqualToString:@"iPad4,8"]) return @"iPad Mini 3 ";
if ([platform isEqualToString:@"iPad4,9"]) return @"iPad Mini 3 ";
if ([platform isEqualToString:@"iPad5,1"]) return @"iPad Mini 4 WiFi ";
if ([platform isEqualToString:@"iPad5,2"]) return @"iPad Mini 4 WiFi+Cellular ";
if ([platform isEqualToString:@"iPad5,3"]) return @"iPad Air2 ";
if ([platform isEqualToString:@"iPad5,4"]) return @"iPad Air2 ";
if ([platform isEqualToString:@"iPad6,7"]) return @"iPad Pro WiFi 12.7-inch";
if ([platform isEqualToString:@"iPad6,8"]) return @"iPad Pro WiFi+Cellular 12.7-inch";
if ([platform isEqualToString:@"iPad6,3"]) return @"iPad Pro WiFi 9.7-inch";
if ([platform isEqualToString:@"iPad6,4"]) return @"iPad Pro WiFi+Cellular 9.7-inch";
if ([platform isEqualToString:@"i386"]) return @"iPhone Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"iPhone Simulator";
return platform;
}

如何使用
首先在.m文件中导入以下两个头文件

1
2
#import "GetDeviceModel.h"
#import <sys/sysctl.h>

然后在需要获取设备型号地方这样写,用一个NSString类型的对象接收

1
2
NSString *string = [GetDeviceModel getCurrentDeviceModel];
NSLog(@"设备型号:%@",string);

也可以给当前app的AppDelegate添加一个DeviceModel属性,一下是AppDelegate的.h文件内容

1
2
3
4
5
6
7
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic,copy) NSString *DeviceModel;
@end

然后直接想下面这样用就行了

1
self.DeviceModel = [GetDeviceModel getCurrentDeviceModel];

完整代码演示:https://git.oschina.net/LiynXu/GetDeviceModel.git 欢迎访问!
效果展示:
这里写图片描述