iOS开发之获取手机信息
2016-03-06 16:37
393 查看
iOS的APP应用开发过程中,为了bug跟踪或者获取用户反馈,需要自动收集用户设备、系统信息、应用信息等。当然这些信息是用户的非隐私信息,是通过开发api可以获取到的。那么通过哪些api可以获取这些信息呢?iOS的SDK中主要提供了UIDevice,NSBundle,NSLocale三种。
UIDevice
UIDevice提供了多种属性、类函数及状态通知,可以帮助我们全方位了解设备状况。从检测电池电量到定位设备与临近感应,UIDevice所做的工作就是为应用程序提供用户及设备的一些信息。UIDevice类还能够收集关于设备的各种具体细节,例如机型及iOS版本等。其中大部分属性都对开发工作具有积极的辅助作用。
使用UIDevice获取手机属性:
NSBundle
bundle是一个目录,其中包含了程序会使用到的资源。 这些资源包含了如图像、声音、编译好的代码、nib文件(用户也会把bundle称为plug-in)。对应bundle,cocoa提供了类NSBundle。一个应用程序看上去和其他文件没有什么区别,但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录。 我们把这个目录叫做程序的main bundle。通过这个路径可以获取到应用的信息,例如应用名、版本号等。
NSLocale
NSLocale可以获取用户的本地化信息设置,例如货币类型,国家,语言,数字,日期格式的格式化,提供正确的地理位置显示等等。下面的代码获取机器当前语言和国家代码。
注意:
UIDevice是无法获得具体的设备型号的,要获得设备型号,比如(iphone 4s, iphone5),要通过这样的办法:
引入头文件:
获取型号:
这里得到的platform是个设备型号, 比如iphone5,2。故要更加精确点,可以自己根据字符串来判断。比如:
if ([platform isEqualToString:@”iPhone3,1”])
return @”iPhone 4”;
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”;
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事
- IOS 改变键盘颜色代码
- 微信支付终于成功了(安卓、iOS)在此分享