访问基本的设备信息
UIDevice类提供了与设备有关的一些重要属性,包括iPhone、ipad或者iPod touch的型号、设备名称、OS名称以及OS版本。通过这种一站式解决方案,我们可以获知系统的一些详细信息。每项属性都要通过实例方法来获取。
可以从UIDevice中获取的设备信息有:
1、systemName——该属性返回当前操作系统的名称。对于目前的iOS设备来说,只有一种系统运行在iOS平台上,那就是iPhone OS。现在已经改为iOS。
2、systemVersion——该属性表示设备上面安装的固件版本,比方说4.3、5.1.1等。
3、model——该属性是个字符串,用来描述设备的型号,也就是iPhone、iPad或者iPod touch。如果iOS系统将来能够运行在新型的设备上面,那么还会有其他字符串用来描述那些型号。localizedModel提供了该属性的本地化版本。
4、userInterfaceIdiom——该属性表示当前设备的界面样式,他要么是iPhone式要么是iPad式。如果苹果公司将来发布了具有新式界面的设备,那么可能还会出现其他属性值。
5、name——该属性表示用户在iTunes中给iPhone所起的名字,比方说“Joe‘s”。这个名称也用来创建设备的本地主机名。
下面举例说明以上几个属性的用法:
UIDevice *device = [UIDevice currentDevice];
NSLog(@"system name:%@",device.systemName);
NSLog(@"model:%@",device.model);
NSLog(@"system version:%@",device.systemVersion);
NSLog(@"name:%@",device.name);
在目前的iOS系统中,我们可以用一条简单的布尔测试来判断设备的界面样式。下面这行代码可以判断界面是不是iPad式的:
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
上面代码使用了UIKit中一个很方便的宏——UI_USER_INTERFACE_IDIOM()。他会判断UIDevice能否响应特定的选择子,如果可以,就返回[[UIDevice currentDevice] userInterfaceIdiom],若不能,则返回UIUserInterfaceIdiomPhone。
添加设备能力限制
把程序提交到APP Store的时候,可以在Info.plist属性列表里面指定程序的需求。这些需求将会告诉iTunes以及移动版的APP Store设备必须具备哪些能力,才能运行本程序。
每台iOS设备的硬件的能力各不相同。有些该有摄像头和GPS功能,有些则没有。还有一些带陀螺仪、自动对焦以及其他强大的特性。开发者可以指明设备必须具备何种能力,方能运行本程序。
如果Info.plist文件里面有UIRequiredDeviceCapabilities键,那么iTunes及移动版的APP Store就会对应程序的安装施加限制,令其只能安装在具有这些能力的设备上面。开发者可以同字符串数组或者字典来提供这份列表。
如果采用数组来指明设备应该具有的能力,那么数组中的每个元素就表示设备必须要有的一项功能。若是用字典,则可以明确规定设备必须具有或不能具有的特性。字典里的内个键都表示一种特性。键所对应的值如果是真,就表示设备必须具备此特性,如果是假,则表示设备决不能具备此特性。
只有当程序必须运行在具备某特性的设备上面,或是决不能运行在具备某特征的设备上面时,我们才应该对其作出限定。程序如果能够在不具备某特征的设备上设法运行,那我们就不应该增加这条限制。
1、提供描述信息以征求用户同意
为了保护隐私,应用程序在使用日历数据、摄像头、联系人、照片、位置等功能时,必须获得终端用户的同意。而为了值终端用户能够同意,可发着应该解释一下程序是如何使用相关数据的,并且应该描述出这样做的原因。在info.plist文件中,我们可以为下面几个顶级的键指定相关的字符串值:
NSBluetoothPeripheraUsageDescription
NSCalendarsUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSLocationUsageDescription
NSMicrophomeUsageDescription
NSMotionUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
当iOS向用户征询特定资源的访问权限时,他会把相关字符串显示在标准的对话框里。
2、Info.plist文件中其他常用的键
1、UIFileSharingEnabled(布尔值,默认关闭)——该属性使得用户可以从iTunes中访问应用程序Documents文件夹下的内容。该文件夹出现在应用程序沙盒的最顶层。
2、UIAppFonts(数组,其中每个字符串都是字体文件的名称,文件名里也包含扩展名)——该属性用来指定app bundle中所包含的自定义TTF字体。如果添加了这种字体,那么可以使用标准的UIFont调用来访问他们。
3、UIApplicationExitsOnSuspend(布尔值,默认关闭)——当用户按下Home键时,系统可以把应用程序直接终止,而不是将其切入后台。如果启用了该属性,那么iOS就会终止程序,并将其从内存中移除。
4、UIRequresPersistentWifi(布尔值,默认关闭)——该属性可以告诉iOS系统:在程序处于活动状态时,应该保持WiF连接。
5、UIStatusBarHidden(布尔值,默认关闭)——如果启用这个属性,当程序启动时状态栏会隐藏起来。
6、UIStatusBarStyle(字符串,默认是UIStatusBarStyleDefault)——设定状态栏在程序启动时的样式。