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

UIDevice

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

  1. //设备相关信息的获取
  2. NSString *strName = [[UIDevice currentDevice] name];
  3. NSLog(@"设备名称:%@", strName);//e.g. "My iPhone"
  4. NSString *strId = [[UIDevice currentDevice] uniqueIdentifier];
  5. NSLog(@"设备唯一标识:%@", strId);//UUID,5.0后不可用
  6. NSString *strSysName = [[UIDevice currentDevice] systemName];
  7. NSLog(@"系统名称:%@", strSysName);// e.g. @"iOS"
  8. NSString *strSysVersion = [[UIDevice currentDevice] systemVersion];
  9. NSLog(@"系统版本号:%@", strSysVersion);// e.g. @"4.0"
  10. NSString *strModel = [[UIDevice currentDevice] model];
  11. NSLog(@"设备模式:%@", strModel);// e.g. @"iPhone", @"iPod touch"
  12. NSString *strLocModel = [[UIDevice currentDevice] localizedModel];
  13. NSLog(@"本地设备模式:%@", strLocModel);// localized version of model

NSBundle

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

  1. //app应用相关信息的获取
  2. NSDictionary *dicInfo = [[NSBundle mainBundle] infoDictionary];
  3. //    CFShow(dicInfo);
  4. NSString *strAppName = [dicInfo objectForKey:@"CFBundleDisplayName"];
  5. NSLog(@"App应用名称:%@", strAppName);
  6. NSString *strAppVersion = [dicInfo objectForKey:@"CFBundleShortVersionString"];
  7. NSLog(@"App应用版本:%@", strAppVersion);
  8. NSString *strAppBuild = [dicInfo objectForKey:@"CFBundleVersion"];
  9. NSLog(@"App应用Build版本:%@", strAppBuild);

NSLocale

     NSLocale可以获取用户的本地化信息设置,例如货币类型,国家,语言,数字,日期格式的格式化,提供正确的地理位置显示等等。下面的代码获取机器当前语言和国家代码。
 
    1. //Getting the User’s Language
    2. NSArray *languageArray = [NSLocale preferredLanguages];
    3. NSString *language = [languageArray objectAtIndex:0];
    4. NSLog(@"语言:%@", language);//en
    5. NSLocale *locale = [NSLocale currentLocale];
    6. NSString *country = [locale localeIdentifier];
    7. NSLog(@"国家:%@", country); //en_US

iOS的UIDevice,NSBundle,NSLocale的更多相关文章

  1. iOS开发 获取手机信息(UIDevice,NSBundle,NSlocale)

    在开发中,需要获取当前设备的一些信息,可以通过UIDevice,NSbundle,NSlocale获取. UIDevice UIDevice 提供了多种属性,类函数及状态通知,可以检测手机电量,定位, ...

  2. iOS学习之NSBundle介绍和使用

    iOS学习之NSBundle介绍和使用 http://blog.csdn.net/totogo2010/article/details/7672271 新建一个Single View Applicat ...

  3. IOS设备 UIDevice 获取操作系统 版本 电量 临近手机触发消息检测 (真机亲测可用)

    - (void)viewDidLoad { [super viewDidLoad]; // 操作系统 NSString * osName =[[UIDevice currentDevice]syste ...

  4. 【转】 iOS学习之NSBundle介绍和使用

    bundle是一个目录,其中包含了程序会使用到的资源.这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in).对应bundle, cocoa提供了类NSBun ...

  5. ios开发处理服务器返回的时间字符串

    #import <Foundation/Foundation.h> void other(); void string2date(); int main(int argc, const c ...

  6. ios专题 - 使用bundle文件管理资源

    [原创]http://www.cnblogs.com/luoguoqiang1985 以前,自己写程序,图片等资源放得比较乱.后来,发现有个更好的方法来管理图片等资源文件 --bundle文件. 1) ...

  7. ios - 工具类

    这几天看项目,把俺旁边小哥哥的一个工具类相中了,希望对大家有所帮助哦~~~~~~~~~ // // PLZ_Tool.h // // Created by penglaizhi on 2017/7/3 ...

  8. iOS 11适配和iPhone X的适配

    这两天对自己负责的项目进行iOS 11和iPhone X的适配,网上的博客很多,也看了很多别人的记录博客,这里把自己遇到的问题记录下,当然有些不仅仅是iOS 11和iPhone X的适配,还包括自己遇 ...

  9. iOS开发系列-iOS适配

    概述 发布iPhone X 系统版本为iOS11, 由于刘海屏原因需要对新的机型做适配. iPhone X safeArea iOS11苹果提出safeArea替代iOS7引入 topLayoutGu ...

随机推荐

  1. [教训] windows 电脑的垃圾文件清理...

    坑你没商量! 这个名叫 “清除系统垃圾.bat“ 的文件在网上传播很广,但是,却出现了错误的版本,如果按照它逐条执行,将导致系统文件夹被一锅端,只能再重装的悲剧! 举个栗子: 错误版本:http:// ...

  2. 全面分析Java的垃圾回收机制

    Java的堆是一个运行时数据区,类的实例(对象)从中分配空间.Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new.newarray.anewarray和mult ...

  3. HDU 5010 Get the Nut(2014 ACM/ICPC Asia Regional Xi'an Online)

    思路:广搜, 因为空格加上动物最多只有32个那么对这32个进行编号,就能可以用一个数字来表示状态了,因为只有 ‘P’   'S' 'M' '.' 那么就可以用4进制刚好可以用64位表示. 接下去每次就 ...

  4. HTML 之 head

    使用 base 标签使页面中的所有标签在新窗口中打开.<!DOCTYPE html> <html> <head> <meta http-equiv=" ...

  5. (BFS)aoj0558-Cheese

    题目地址 根据题意,必须按从1吃到n的顺序.建立vi数组记录去没去过某一点,从起点向四周搜索,合法且未去过就入队列.每当找到符合此时应吃的位置,就将这个位置改为'.'并刷新vi数组,清空队列(因为必须 ...

  6. 个人纪录(初)----配置文件.properties的简单读取

    本文为个人文本纪录. demo:::: 1.创建普通的java项目:这实例项目名字叫properties. 2.创建.properties文件:src目录下创建XX.properties文件,识别&q ...

  7. Android studio 项目的layout的文件打开,preview 视图无法显示,提示“no sdk found...”可能原因?

    1.安装android studio后启动,引导新的下载的sdk文件夹,不要默认在c:\users\你的用户名\appdata...下的sdk文件夹. 2.如果已经默认的,重新在settings/pr ...

  8. 关闭SqlServer连接

    经常使用需要还原数据库又不想关闭已经打开的画面,所以直接上 CREATE PROCEDURE [dbo].[StopLogin] ) AS DECLARE ), ) BEGIN IF (@Dname ...

  9. Scala编程--函数式对象

    本章的重点在于定义函数式对象,也就是说,没有任何可变状态的对象的类.作为运行的例子,我们将创造若干把分数作为不可变对象建模的类的变体.在这过程中,我们会展示给你Scala面向对象编程的更多方面:类参数 ...

  10. druid.properties的配置

    driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://NoOne:3306/eyes<!--需修改--> username=root ...