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

iOS 基本设备信息查询相关推荐

  1. 5.4版本内核ufs设备信息查询方式

    本章主要介绍5.4版本内核中ufs存储设备的设备信息查询方法: ufs设备相关信息节点位于系统:/sys/devices/platform/soc/1d84000.ufshc目录下,具体如下: 其中: ...

  2. LG smartTV 设备信息查询

    LG smartTV 设备信息查询方法可依据 LG 开发者网站,大体可分为两种方式: 1. API > Luna Service API 1.1 API > Luna Service AP ...

  3. ios获取设备信息,手机型号

    获取手机设备信息 let deviceName = UIDevice.currentDevice().name //获取设备名称 例如:梓辰的手机 let sysName = UIDevice.cur ...

  4. iOS获取设备信息和获取当前屏幕状态

    建议使用单利然后定义一个宏放到pch里, 这样比较方便下面是自己封装的一个类. (获取设备信息)上代码 /* CurrentDevice.h */ /* 提供两种单利创建方式 */ #import & ...

  5. ios获取设备信息总结

    本文转载至 http://blog.csdn.net/decajes/article/details/41807977 1.获取设备的信息 [objc] view plaincopy UIDevice ...

  6. 史上最全的iOS各种设备信息获取总结(iPhone8/iPhone X 已更新)

    不管是在Android开发还是iOS开发过程中,有时候我们需要经常根据设备的一些状态或信息进行不同的设置和性能配置,例如横竖屏切换时,电池电量低时,内存不够时,网络切换时等等,我们在这时候需要进行一些 ...

  7. 史上最全的iOS各种设备信息获取总结

    http://www.cocoachina.com/ios/20171024/20890.html 为了统计用户信息.下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述一下各种信息的获 ...

  8. iOS: iOS各种设备信息获取

    Author:si1ence Link:http://www.jianshu.com/p/b23016bb97af 为了统计用户信息.下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述 ...

  9. 史上最全的iOS各种设备信息获取总结(iPhone X 详细信息已更新)

    2016.07.01 更新至iPhone X 新增设备颜色的获取 为了统计用户信息.下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述一下各种信息的获取方式: 点击下载以上展示效果的G ...

最新文章

  1. break continue 016
  2. sloth——算法工程师标注数据的福音
  3. java 销毁线程_线程 学习教程(一): Java中终止(销毁)线程的方法
  4. 基于CkEditor实现.net在线开发之路(1)
  5. [BUUCTF-pwn]——picoctf_2018_buffer overflow 1
  6. 面部识别公司深网视界泄露数百万人信息
  7. gdb调试的几点提示(1)
  8. Total Physical Response TPR
  9. 77-spark与storm比对与选型
  10. 计算机网络运输层习题5-17
  11. android怎样降版本,Android7.0 APP降级方法
  12. 网友对各种杀软的评价诗歌
  13. 计算机睡眠状态网络是断开的吗,电脑进入睡眠模式会自动断网如何解决
  14. Eclipse使用技巧--设置编辑器背景护眼色和设置字体
  15. C语言中 各数据类型求绝对值abs(),fabsf()等函数的使用。
  16. 期货大佬给交易者的交易箴言,值得珍藏品读!
  17. IOC 回顾 | 踏扁舟一叶 逐野鹤 行广阔
  18. PHP中的SAPI是什么?如何实现?
  19. IC验证-寄存器专项测试
  20. JS 手机浏览器唤醒手机QQ

热门文章

  1. rman 异地备份 linux,RMAN异地备份方案
  2. 分位数回归损失函数代码实现解析
  3. SLAM评测工具EVO常用功能介绍【正在刷夜的李哈哈】
  4. linux系统gps时钟定时校时,自动校时钟—GPS标准时钟系统
  5. 荷兰三色旗问题 Dutch national flag problem
  6. 普通索引和唯一索引的区别
  7. 服务器直接可以做无盘系统吗,云服务器支持无盘系统吗
  8. DDR3中bank, 16bit和32bit等概念(很好的资料)
  9. CListCtrl 应用
  10. 九里机器人_电子科技大学九里堤校区