开发中总会遇到很多需要查询设备及App信息的情况,有时候也是为了更好的用户体验或者为了bug跟踪,可能会需要获取用户的应用信息、系统信息、设备信息。这些信息的获取可以根据不同的设备或者App、系统版本来提供不同的功能或更好的用户体验,或者让开发者能更好的分析用户的问题原因。
因此我查询了很多资料,整理并更新记录起来,为了方便自己日后查询,同时分享给大家,不多说,撸代码吧.
(一)设备及App信息查询
1.获取设备名称
OC代码
1
|
NSString *deviceName = [[UIDevice currentDevice] name]; |
Swift代码
1
|
let deviceName = UIDevice.currentDevice().name |
2.获取系统版本号
OC代码
1
|
NSString *sysVersion = [[UIDevice currentDevice] systemVersion]; |
Swift代码
1
|
let sysVersion = UIDevice.currentDevice().systemVersion |
3.获取设备唯一标识符
OC代码
1
|
NSString *deviceUUID = [[[UIDevice currentDevice] identifierForVendor] ; |
Swift代码
1
|
let deviceUUID = UIDevice.currentDevice().identifierForVendor?.UUIDString |
4.获取设备型号
OC代码
1
|
NSString *deviceModel = [[UIDevice currentDevice] model]; |
Swift代码
1
|
let deviceModel = UIDevice.currentDevice().model |
5.获取App相关的信息
OC代码
1
2
3
4
5
6
7
|
NSDictionary *infoDic = [[NSBundle mainBundle] infoDictionary]; // 获取App的版本号 NSString *appVersion = [infoDic objectForKey:@ "CFBundleShortVersionString" ]; // 获取App的build版本 NSString *appBuildVersion = [infoDic objectForKey:@ "CFBundleVersion" ]; // 获取App的名称 NSString *appName = [infoDic objectForKey:@ "CFBundleDisplayName" ]; |
Swift代码
1
2
3
4
5
6
7
|
let infoDic = NSBundle.mainBundle().infoDictionary // 获取App的版本号 let appVersion = infoDic?[ "CFBundleShortVersionString" ] // 获取App的build版本 let appBuildVersion = infoDic?[ "CFBundleVersion" ] // 获取App的名称 let appName = infoDic?[ "CFBundleDisplayName" ] |
(二)iOS获取具体设备型号
OC代码获取iOS设备型号:
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
|
// 需要#import + (NSString*)deviceModelName { struct utsname systemInfo; uname(&systemInfo); NSString *deviceModel = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; //iPhone 系列 if ([deviceModel isEqualToString:@ "iPhone1,1" ]) return @ "iPhone 1G" ; if ([deviceModel isEqualToString:@ "iPhone1,2" ]) return @ "iPhone 3G" ; if ([deviceModel isEqualToString:@ "iPhone2,1" ]) return @ "iPhone 3GS" ; if ([deviceModel isEqualToString:@ "iPhone3,1" ]) return @ "iPhone 4" ; if ([deviceModel isEqualToString:@ "iPhone3,2" ]) return @ "Verizon iPhone 4" ; if ([deviceModel isEqualToString:@ "iPhone4,1" ]) return @ "iPhone 4S" ; if ([deviceModel isEqualToString:@ "iPhone5,1" ]) return @ "iPhone 5" ; if ([deviceModel isEqualToString:@ "iPhone5,2" ]) return @ "iPhone 5" ; if ([deviceModel isEqualToString:@ "iPhone5,3" ]) return @ "iPhone 5C" ; if ([deviceModel isEqualToString:@ "iPhone5,4" ]) return @ "iPhone 5C" ; if ([deviceModel isEqualToString:@ "iPhone6,1" ]) return @ "iPhone 5S" ; if ([deviceModel isEqualToString:@ "iPhone6,2" ]) return @ "iPhone 5S" ; if ([deviceModel isEqualToString:@ "iPhone7,1" ]) return @ "iPhone 6 Plus" ; if ([deviceModel isEqualToString:@ "iPhone7,2" ]) return @ "iPhone 6" ; if ([deviceModel isEqualToString:@ "iPhone8,1" ]) return @ "iPhone 6s" ; if ([deviceModel isEqualToString:@ "iPhone8,2" ]) return @ "iPhone 6s Plus" ; if ([deviceModel isEqualToString:@ "iPhone9,1" ]) return @ "iPhone 7 (CDMA)" ; if ([deviceModel isEqualToString:@ "iPhone9,3" ]) return @ "iPhone 7 (GSM)" ; if ([deviceModel isEqualToString:@ "iPhone9,2" ]) return @ "iPhone 7 Plus (CDMA)" ; if ([deviceModel isEqualToString:@ "iPhone9,4" ]) return @ "iPhone 7 Plus (GSM)" ; //iPod 系列 if ([deviceModel isEqualToString:@ "iPod1,1" ]) return @ "iPod Touch 1G" ; if ([deviceModel isEqualToString:@ "iPod2,1" ]) return @ "iPod Touch 2G" ; if ([deviceModel isEqualToString:@ "iPod3,1" ]) return @ "iPod Touch 3G" ; if ([deviceModel isEqualToString:@ "iPod4,1" ]) return @ "iPod Touch 4G" ; if ([deviceModel isEqualToString:@ "iPod5,1" ]) return @ "iPod Touch 5G" ; //iPad 系列 if ([deviceModel isEqualToString:@ "iPad1,1" ]) return @ "iPad" ; if ([deviceModel isEqualToString:@ "iPad2,1" ]) return @ "iPad 2 (WiFi)" ; if ([deviceModel isEqualToString:@ "iPad2,2" ]) return @ "iPad 2 (GSM)" ; if ([deviceModel isEqualToString:@ "iPad2,3" ]) return @ "iPad 2 (CDMA)" ; if ([deviceModel isEqualToString:@ "iPad2,4" ]) return @ "iPad 2 (32nm)" ; if ([deviceModel isEqualToString:@ "iPad2,5" ]) return @ "iPad mini (WiFi)" ; if ([deviceModel isEqualToString:@ "iPad2,6" ]) return @ "iPad mini (GSM)" ; if ([deviceModel isEqualToString:@ "iPad2,7" ]) return @ "iPad mini (CDMA)" ; if ([deviceModel isEqualToString:@ "iPad3,1" ]) return @ "iPad 3(WiFi)" ; if ([deviceModel isEqualToString:@ "iPad3,2" ]) return @ "iPad 3(CDMA)" ; if ([deviceModel isEqualToString:@ "iPad3,3" ]) return @ "iPad 3(4G)" ; if ([deviceModel isEqualToString:@ "iPad3,4" ]) return @ "iPad 4 (WiFi)" ; if ([deviceModel isEqualToString:@ "iPad3,5" ]) return @ "iPad 4 (4G)" ; if ([deviceModel isEqualToString:@ "iPad3,6" ]) return @ "iPad 4 (CDMA)" ; if ([deviceModel isEqualToString:@ "iPad4,1" ]) return @ "iPad Air" ; if ([deviceModel isEqualToString:@ "iPad4,2" ]) return @ "iPad Air" ; if ([deviceModel isEqualToString:@ "iPad4,3" ]) return @ "iPad Air" ; if ([deviceModel isEqualToString:@ "iPad5,3" ]) return @ "iPad Air 2" ; if ([deviceModel isEqualToString:@ "iPad5,4" ]) return @ "iPad Air 2" ; if ([deviceModel isEqualToString:@ "i386" ]) return @ "Simulator" ; if ([deviceModel isEqualToString:@ "x86_64" ]) return @ "Simulator" ; if ([deviceModel isEqualToString:@ "iPad4,4" ] ||[deviceModel isEqualToString:@ "iPad4,5" ] ||[deviceModel isEqualToString:@ "iPad4,6" ]) return @ "iPad mini 2" ; if ([deviceModel isEqualToString:@ "iPad4,7" ] ||[deviceModel isEqualToString:@ "iPad4,8" ] ||[deviceModel isEqualToString:@ "iPad4,9" ]) return @ "iPad mini 3" ; return deviceModel; } |
记得一定要#import啊
Swift代码获取iOS设备型号:
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
|
//MARK: - UIDevice延展 public extension UIDevice { var modelName: String { var systemInfo = utsname() uname(&systemInfo) let machineMirror = Mirror(reflecting: systemInfo.machine) let identifier = machineMirror.children.reduce( "" ) { identifier, element in guard let value = element.value as ? Int8 where value != 0 else { return identifier } return identifier + String (UnicodeScalar(UInt8(value))) } switch identifier { case "iPod5,1" : return "iPod Touch 5" case "iPod7,1" : return "iPod Touch 6" case "iPhone3,1" , "iPhone3,2" , "iPhone3,3" : return "iPhone 4" case "iPhone4,1" : return "iPhone 4s" case "iPhone5,1" , "iPhone5,2" : return "iPhone 5" case "iPhone5,3" , "iPhone5,4" : return "iPhone 5c" case "iPhone6,1" , "iPhone6,2" : return "iPhone 5s" case "iPhone7,2" : return "iPhone 6" case "iPhone7,1" : return "iPhone 6 Plus" case "iPhone8,1" : return "iPhone 6s" case "iPhone8,2" : return "iPhone 6s Plus" case "iPhone9,1" : return "iPhone 7 (CDMA)" case "iPhone9,3" : return "iPhone 7 (GSM)" case "iPhone9,2" : return "iPhone 7 Plus (CDMA)" case "iPhone9,4" : return "iPhone 7 Plus (GSM)" case "iPad2,1" , "iPad2,2" , "iPad2,3" , "iPad2,4" : return "iPad 2" case "iPad3,1" , "iPad3,2" , "iPad3,3" : return "iPad 3" case "iPad3,4" , "iPad3,5" , "iPad3,6" : return "iPad 4" case "iPad4,1" , "iPad4,2" , "iPad4,3" : return "iPad Air" case "iPad5,3" , "iPad5,4" : return "iPad Air 2" case "iPad2,5" , "iPad2,6" , "iPad2,7" : return "iPad Mini" case "iPad4,4" , "iPad4,5" , "iPad4,6" : return "iPad Mini 2" case "iPad4,7" , "iPad4,8" , "iPad4,9" : return "iPad Mini 3" case "iPad5,1" , "iPad5,2" : return "iPad Mini 4" case "iPad6,7" , "iPad6,8" : return "iPad Pro" case "AppleTV5,3" : return "Apple TV" case "i386" , "x86_64" : return "Simulator" default : return identifier } } } |
(三)其他设备信息查询(不经常用)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
- ( void )deviceInfo { UIDevice *dev = [UIDevice currentDevice]; NSLog(@ "是否支持多任务:%@" , dev.multitaskingSupported?@ "是" :@ "否" ); NSLog(@ "设备名字:%@" , dev.name); NSLog(@ "系统名字:%@" , dev.systemName); NSLog(@ "设备model:%@" , dev.model); NSLog(@ "设备本地化model:%@" , dev.localizedModel); NSLog(@ "用户界面类型:%ld" , (long)dev.userInterfaceIdiom); NSLog(@ "设备厂商标识:%@" , dev.identifierForVendor); NSLog(@ "设备方向:%ld" , (long)dev.orientation); NSLog(@ "是否可以生成设备方向通知:%@" , dev.generatesDeviceOrientationNotifications?@ "是" :@ "否" ); NSLog(@ "设备电量:%f" , dev.batteryLevel); NSLog(@ "电量监测是否启用:%@" , dev.batteryMonitoringEnabled?@ "是" :@ "否" ); NSLog(@ "设备电量状态:%ld" , (long)dev.batteryState); NSLog(@ "距离感应器是否可以使用:%@" , dev.proximityMonitoringEnabled?@ "是" :@ "否" ); NSLog(@ "距离感应器是否打开:%@" , dev.proximityState?@ "是" :@ "否" ); } |