iOS的APP应用开发过程中,为了bug跟踪或者获取用户反馈,需要自动收集用户设备、系统信息、应用信息等。当然这些信息是用户的非隐私信息,是通过开发api可以获取到的。那么通过哪些api可以获取这些信息呢?iOS的SDK中主要提供了UIDevice,NSBundle,NSLocale三种。

  • UIDevice

UIDevice提供了多种属性、类函数及状态通知,可以帮助我们全方位了解设备状况。从检测电池电量到定位设备与临近感应,UIDevice所做的工作就是为应用程序提供用户及设备的一些信息。UIDevice类还能够收集关于设备的各种具体细节,例如机型及iOS版本等。其中大部分属性都对开发工作具有积极的辅助作用。
使用UIDevice获取手机属性:

    //获取手机信息NSString *stringName = [[UIDevice currentDevice] name];NSLog(@"设备名称:%@",strName);NSString *stringId = [[UIDevice currentDevice] uniqueIdentifier];NSLog(@"设备唯一标识:%@", strId);//UUID在5.0后不可用NSString *strSysName = [[UIDevice currentDevice] systemName];NSLog(@"系统名称:%@", strSysName);// e.g. @"iOS"NSString *strSysVersion = [[UIDevice currentDevice] systemVersion];NSLog(@"系统版本号:%@", strSysVersion);// e.g. @"4.0"NSString *strModel = [[UIDevice currentDevice] model];NSLog(@"设备模式:%@", strModel);// e.g. @"iPhone", @"iPod touch"NSString *strLocModel = [[UIDevice currentDevice] localizedModel];NSLog(@"本地设备模式:%@", strLocModel);//
  • NSBundle

bundle是一个目录,其中包含了程序会使用到的资源。 这些资源包含了如图像、声音、编译好的代码、nib文件(用户也会把bundle称为plug-in)。对应bundle,cocoa提供了类NSBundle。一个应用程序看上去和其他文件没有什么区别,但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录。 我们把这个目录叫做程序的main bundle。通过这个路径可以获取到应用的信息,例如应用名、版本号等。

    // app应用相关信息的获取NSDictionary *dicInfo = [[NSBundle mainBundle] infoDictionary];// CFShow(dicInfo);NSString *strAppName = [dicInfo objectForKey:@"CFBundleDisplayName"];NSLog(@"App应用名称:%@", strAppName);NSString *strAppVersion = [dicInfo objectForKey:@"CFBundleShortVersionString"];NSLog(@"App应用版本:%@", strAppVersion);NSString *strAppBuild = [dicInfo objectForKey:@"CFBundleVersion"];NSLog(@"App应用Build版本:%@", strAppBuild);
  • NSLocale

NSLocale可以获取用户的本地化信息设置,例如货币类型,国家,语言,数字,日期格式的格式化,提供正确的地理位置显示等等。下面的代码获取机器当前语言和国家代码。

   //获取用户当前使用的语言  NSArray *languageArray = [NSLocale preferredLanguages];  NSString *language = [languageArray objectAtIndex:0];  NSLog(@"语言:%@", language);//获取用户所在国家信息   NSLocale *locale = [NSLocale currentLocale];  NSString *country = [locale localeIdentifier];  NSLog(@"国家:%@", country);

注意:
UIDevice是无法获得具体的设备型号的,要获得设备型号,比如(iphone 4s, iphone5),要通过这样的办法:

引入头文件:

#include <sys/types.h>
#include <sys/sysctl.h>

获取型号:

// 手机型号
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = (char*)malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];

这里得到的platform是个设备型号, 比如iphone5,2。故要更加精确点,可以自己根据字符串来判断。比如:

if ([platform isEqualToString:@"iPhone3,1"])    return @"iPhone 4";

iOS之获取手机的系统信息相关推荐

  1. ios开发-获取手机相关信息

    今天在做客户端的时候,里面有个意见反馈功能. 调用系统带的邮件功能,发送邮件到指定邮箱. 然后我就想,应该在邮件正文部分添加手机相关内容,比如型号,版本,应用程序的版本等等,这样不仅使用者方便,开发者 ...

  2. iOS 如何获取手机型号、系统版本、电池电量

    1.手机型号:iPhone 6 NSString* phoneModel = [self iphoneType]; //方法在下面 2.手机系统版本:9.1 NSString* phoneVersio ...

  3. iOS 逆向获取手机硬件参数

    一.获取手机相关的参数 #import <AdSupport/AdSupport.h>#import <CoreTelephony/CTCarrier.h> #import & ...

  4. iOS开发获取手机通讯录中的电话号码和姓名

    1.申请授权 #import "AppDelegate.h" #import <AddressBook/AddressBook.h>@interface AppDele ...

  5. IOS Object-c获取手机音量,设置手机音量

    一.导入AVFoundation和MediaPlayer 二.导入头文件 //导入头文件 #import <AVFoundation/AVAudioSession.h> #import & ...

  6. 获取手机mac php,IOS_iOS如何获取手机的Mac地址,首先说明下,下面两种方法均 - phpStudy...

    iOS如何获取手机的Mac地址 首先说明下,下面两种方法均可以获得手机的mac地址,但是有个限制,是在iOS7以下才可以获得.iOS7以后苹果对于sysctl和ioctl进行了技术处理,MAC地址返回 ...

  7. iOS学习笔记(十三)——获取手机信息(UIDevice、NSBundle、NSLocale)

    2019独角兽企业重金招聘Python工程师标准>>> iOS的APP的应用开发的过程中,有时为了bug跟踪或者获取用反馈的需要自动收集用户设备.系统信息.应用信息等等,这些信息方便 ...

  8. ios获取手机 meid_共享充电宝并不简单,iOS也顶不住,隐私信息直接暴露

    现在由于手机的功能越来越多,屏幕越来越大,电池都是感觉慢慢的不够用了起来,对于这个问题,其实现在有很多的共享充电宝,所以大家也都不那么担心,但是实际上使用共享充电宝也是存在一定程度的风险的,只是大家都 ...

  9. php推送手机,PHP_解析php做推送服务端实现ios消息推送,准备工作1.获取手机注册应用 - phpStudy...

    解析php做推送服务端实现ios消息推送 准备工作1.获取手机注册应用的deviceToken(iphone手机注册应用时返回唯一值deviceToken) 2.获取ck.pem文件(做手机端的给) ...

最新文章

  1. 应用宝上架审核要求_【建议收藏】安卓应用商店上架经验,含流程,方法
  2. redis数据库各种数据类型的增删改查命令
  3. Nginx的功能特性及常用功能
  4. How many ways HDU - 1978(记忆化搜索关于求多少种方式模板)
  5. MySQL表结构设计之范式化和反范式化对比
  6. JavaScript高级之函数进阶
  7. 程序员必备工具包(实物)
  8. MSSQLSERVER数据库- 使用C#来操作事务[转]
  9. 航空航天工程用不用学c语言,2020年北京航空航天软件工程991答疑
  10. 《Python分布式计算》第2章 异步编程 (Distributed Computing with Python)
  11. PostgreSQ 存储过程 和 存储函数的区别
  12. 用C++编写银行叫号系统,项目开源,适合零基础小白学习!
  13. OpenXml编程--修正Word目录页码错误
  14. 企业入职测试题目及答案_企业入职性格测试题以及答案信息
  15. 上传截断_文件上传路径截断实例
  16. VSCode+Marp:用Markdown做幻灯片-宋森安(基础篇)
  17. window10 Web服务器配置IIS的环境搭建
  18. Weblogic的t3协议
  19. 万物互联,解析这一座“数据围城”
  20. linuX中error: unpacking of archive failed on file /usr/lib/python2.7/site-packages/urllib3....

热门文章

  1. Eclipse + Apache Axis2 发布RESTful WebService(一)基础知识
  2. PHP 文件创建/写入
  3. 【转】犹太人的10句话,每一句都值得深思
  4. 告别.NET生成报表统计图的烦恼 (转)
  5. linux band0 手动重启,linux相关知识整理(4)
  6. Java黑皮书课后题第9章:*9.6(秒表)设计一个名为StopWatch的类,该类包含……。编写一个测试程序,用于测量使用选择排序对100000个数字进行排序的执行时间
  7. php判断三角形类型,C#_C#判断三角形的类型,题目描述: 输入三角形的三 - phpStudy...
  8. Tomcat设置Http自动跳转Https
  9. 移动端rem适配-JS
  10. Nuget 多平台多目标快速自动打包