什么是 UIApplication?
- UIApplication 对象是应用程序的象征;
- 每一个应用都有自己的 UIApplication 对象,而且是单例的;
- 通过 [UIApplication sharedApplication] 可以获得这个单例对象;
- 一个 IOS 程序启动后创建的第一个对象就是 UIApplication 对象;
- 利用 UIApplication 对象,能进行一些应用级别的操作。
注意:UIApplication不能手动创建,不能alloc init,一个应用程序只允许 一个。
为什么要弄成单例?
UIApplication 对象是用来设置应用全局信息的,一个应用程序如果有很多 UIApplication 对象,就会导致不知道听谁的。
UIApplication 的作用:做应用级别的操作
1. 设置应用程序图标右上角的红色提醒数字
@property(nonatomic) NSInteger applicationIconBadgeNumber;
// 0. 获取应用程序的象征
UIApplication *app = [UIApplication sharedApplication];
// 1. 设置应用程序图标的提醒数字
app.applicationIconBadgeNumber = 10;
// 创建通知对象
UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
// 注册用户通知(IOS 8 之后才需要注册用户通知,之前不需要,主要是为了提升用户体验)
[app registerUserNotificationSettings:setting];
2.设置联网指示器的可见性
@property(nonatomic,getter = isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;
// 2. 设置联网指示器的提示
app.networkActivityIndicatorVisible = YES;
3.管理状态栏
从 IOS 7 开始,系统提供了2种管理状态栏的方式:
(1)通过 UIViewController 管理(每一个 UIViewController 都可以拥有自己不同的状态栏);
(2)通过 UIApplication 管理(一个应用程序的状态栏都由它统一管理)。
在 IOS 7 中,默认情况下,状态栏都是由 UIViewController 管理的,UIViewController 实现下列方法就可以轻松管理状态栏的可见性和样式:
状态栏的样式
- (UIStatusBarStyle)preferredStatusBarStyle;
状态栏的可见性
(BOOL)prefersStatusBarHidden;
在 IOS 7 之后,状态栏默认交给控制器管理,不能直接直接赋值为 YES,需要作一些配置。如果想利用 UIApplication 来管理状态栏,首先得修改 Info.plist 的设置,添加一行如下:
// 3. 设置状态栏
app.statusBarHidden = YES;
4. 打开一个资源
UIApplication有个功能十分强大的openURL:方法
- (BOOL)openURL:(NSURL)url;*
openURL:方法的部分功能有
打电话
*UIApplication *app = [UIApplication sharedApplication];
[app openURL:[NSURL URLWithString:@”tel://10086”]];
发短信
[app openURL:[NSURL URLWithString:@”sms://10086”]];
发邮件
[app openURL:[NSURL URLWithString:@”mailto://12345@qq.com”]];
打开一个网页资源
[app openURL:[NSURL URLWithString:@”http://www.baidu.com“]];
示例:
// 4. 打开网页(根据协议头判断用什么软件打开)
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
[app openURL:url];
UIApplication打开资源的好处:不用判断用什么软件打开,系统会自动根据协议头判断。
整个代码工程以及属性图示如下: