美文网首页
iOS-UIApplication

iOS-UIApplication

作者: CDLOG | 来源:发表于2018-07-23 15:00 被阅读30次

什么是UIApplication?

UIApplication对象是应用程序的象征.
每一个应用都有自己的UIApplication对象,这个对象是系统自动帮我们创建的, 它是一个单例对象.
一个iOS程序启动后创建的第一个对象就是UIApplication对象
我们只能通过[UIApplication sharedApplication]获得这个单例对象,不能够手动去创建它.

UIApplication作用?

利用UIApplication对象,能进行一些应用级别的操作.
可以设置应用程序图标右上角的红色提醒数字
设置联网指示器的可见性
可以设置应用程序的状态栏
进行应用之间的跳转.

红色的提醒数字

提醒数字之前必须注册相关的通知,否则无效


 UIApplication *app = [UIApplication sharedApplication];
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
    }];
    app.applicationIconBadgeNumber = 10;

打开其他应用或者链接

1,链接网页或者应用

如果链接的应用不存在,会返回NO,并且不会通过sa

 //应用程序通过协议头的类型,去打开相应的软件.
    NSURL *url =[NSURL URLWithString:@"http://www.baidu.com"];
//如果设置为yes,如果链接的应用不存在,会返回NO,并且不会启动Safari链接
//如果设置为no,如果链接的应用不存在,会返回yes,并且会启动Safari链接,传空字典就是设置为no
    NSDictionary *options = @{UIApplicationOpenURLOptionUniversalLinksOnly : @YES};
    [ [UIApplication sharedApplication] openURL:url options:options completionHandler:^(BOOL success) {
        NSLog(@"success value: %@" ,success?@"YES":@"NO");
    }];

2,打电话

    [ [UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10086"] options:@{} completionHandler:nil];

3发短信

    [ [UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://10086"] options:@{} completionHandler:nil];

UIApplication代理

所有的移动操作系统都有个致命的缺点:app很容易受到打扰。
比如一个来电或者锁屏会导致app进入后台甚至被终止
还有很多其它类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统事件,
这时UIApplication会通知它的delegate对象,让delegate代理来处理这些系统事件

delegate可处理的事件包括:
应用程序的生命周期事件(如程序启动和关闭)
系统事件(如来电)
内存警告
...

UIApplication会在程序一启动时候创建一个遵守UIApplicationDelegate代理.
这个就是我们程序一创建时的AppDelegate类.AppDelegate就是遵守了UIApplicationDelegate协议.
在这个类中很定义很多监听系统事件的方法.同时也定义了一些应用程序的生命周期方法.
生命周期参考链接
主要方法有:

应用程序的生命周期,先获取焦点后进入前台,失去焦点后进入后台
应用程序启动完成的时候调用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"%s",__func__);
return YES;
}

当我们应用程序即将失去焦点的时候调用

- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"%s",__func__);
}

当我们应用程序完全进入后台的时候调用

- (void)applicationDidEnterBackground:(UIApplication *)application{
NSLog(@"%s",__func__);
}

当我们应用程序完全获取焦点的时候调用
只有当一个应用程序完全获取到焦点,才能与用户交互.

- (void)applicationDidBecomeActive:(UIApplication *)application {
          NSLog(@"%s",__func__);
}

当我们应用程序即将进入前台的时候调用

- (void)applicationWillEnterForeground:(UIApplication *)application {
          NSLog(@"%s",__func__);
}

当我们应用程序即将关闭的时候调用

- (void)applicationWillTerminate:(UIApplication *)application {
          NSLog(@"%s",__func__);
}

程序完整启动流程

1.执行Main
2.执行UIApplicationMain函数.
3.创建UIApplication对象,并设置UIApplicationMain对象的代理.
UIApplication的第三个参数就是UIApplication的名称,如果指定为nil,它会默认为UIApplication.
UIApplication的第四个参数为UIApplication的代理.
4.开启一个主运行循环.保证应用程序不退出.
5.加载info.plist.加载配置文件.判断一下info.plist文件当中有没有Main storyboard file base name
里面有没有指定storyboard文件,如果有就去加载info.plist文件,如果没有,那么应用程序加载完毕.

相关文章

网友评论

      本文标题:iOS-UIApplication

      本文链接:https://www.haomeiwen.com/subject/gugdmftx.html