1.UIApplication概述
- UIApplication对象是应用程序的象征
- 每一个应用都有自己的UIApplication对象,而且是单例的
- 通过[UIApplication sharedApplication]可以获得这个单例对象
- 一个iOS程序启动后创建的第一个对象就是UIApplication对象
- 利用UIApplication对象,能进行一些应用级别的操作
- 应用程序图片的提醒数字
- 联网状态
- 设置状态栏
- 打开资源,电话,网页,发短信
2.UIApplication单例对象的创建
- UIApplication单例对象只能通过[UIApplication sharedApplication]方法获取,且只被创建一次,不能通过alloc方法重新创建
// 获取UIApplication单例对象
UIApplication *app = [UIApplication sharedApplication];
UIApplication *app1 = [UIApplication sharedApplication];
UIApplication *app2 = [UIApplication sharedApplication];
NSLog(@"%p-%p-%p",app,app1,app2);
// 打印结果:0x7fa8aa704e00-0x7fa8aa704e00-0x7fa8aa704e00,指向同一块存储空间,证明只被创建了一次
// 不能通过alloc方法创建单例对象,程序会直接崩
// 报错reason: 'There can only be one UIApplication instance.'
UIApplication *app3 = [[UIApplication alloc] init];
3.利用UIApplication对象进行应用级别的操作
- 应用程序图片的提醒数字(常见使用场景QQ消息个数,微信信息,应用商店的软件更新等等)
// 1.设置应用程序的消息提醒数字
app.applicationIconBadgeNumber = 99;
// IOS 8以后需设置通知,需用户同意后才能显示消息提醒数字
// 创建通知对象
//
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
// 注册用户通知
[app registerUserNotificationSettings:settings];
- 联网状态设置
app.networkActivityIndicatorVisible = YES;
- 设置状态栏
- 系统默认情况下状态栏是由控制器管理的,但是在多层级复杂应用情况下,为了便于统一管理状态栏,我们一般使用Application控制
// 控制器设置状态栏
// 设置状态栏隐藏
-(BOOL)prefersStatusBarHidden{
return YES;
}
// 设置状态栏样式
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
// UIApplication设置状态栏
// 必须先配置info.plist文件,添加配置View controller-based status bar appearance为NO(点击+号选择最后一个配置即可)
app
// 设置状态栏
app.statusBarHidden = YES;
// 设置状态栏样式
app.statusBarStyle = UIStatusBarStyleLightContent;// 设置状态栏文字为白色,默认是黑色
- 利用application进行openURL操作
// 打电话
[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"]];
// 还可以打开其他应用程序