开发中总会遇到很多需要查询设备及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?@
"是"
:@
"否"
);
}
|