天天看点

iOS 的 UIApplicationDelegate 你懂多少

几个方法

application:didFinishLaunchingWithOptions:
applicationWillResignActive:
applicationDidBecomeActive:
applicationWillEnterBackground:
applicationWillEnterForeground:
applicationDidReceiveMemoryWarning:
           

1application:didFinishLaunchingWithOptions

UIApplication 被实例化后第一个触发的协议方法。这货主要的任务,就是创建一个 UIWindow,在这货上面显示控制器的视图;

一般在这个方法里面引入根视图,初始化一些第三方平台的库;

一个参数launchOptions是个字典,一般在通知的时候会把通知的参数通过这个字典传过来,一般在本地推送和远程推送用到。

2 openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options

这个主要是在同过外界程序打开app时,会执行这个方法;

例如app A里面的按钮点击打开手机上面的app B 并传给参数

iOS 的 UIApplicationDelegate 你懂多少

利用上面的这个方法,appurlxib是app B里面URL Types ,1111就是想要传的参数,格式为URL Types://参数,当然参数可以省掉,URL Types:// 就行

接收参数如右图:

iOS 的 UIApplicationDelegate 你懂多少

当然从此也可以看出 URL Types的作用 就是这个app的类似外部访问的网址,微信的分享的进入微信和退回应用,用的都是这个道理;

3applicationWillResignActive:

应用从 Active 变为 Inactive 时,触发该协议方法,一般在将要退到后台执行,比如有电话打来时;

resign 为辞职,active 形象说明现在还处于活跃阶段,但是马上要离开

4applicationDidBecomeActive

应用从 Inactive 变为 Active 时,触发该协议方法。

已经处于活跃状态,在后台到前台,页面已经呈现时执行;

5applicationdidEnterBackground:

应用切换至到后台时,触发该协议方法。

应该执行上面的willresign active 然后马上执行这个

6applicationWillEnterForeground:

应用切换至前台时,触发该协议方法。

先执行这个,然后再执行DidBecomeActive

7applicationDidReceiveMemoryWarning:

设备内存不足时,会触发该协议方法;程序退到后台是不执行的,程序正常退出也不执行;只有在内存危机时,苹果为啦保护手机,将kill掉应用

8如果想主动获取 AppDelegate 怎么办?

[[UIApplication sharedApplication] delegate]

9  didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
            
这个是用于极光推送的注册,deviceToken为手机的唯一标示符            
10 didReceiveLocalNotification:(UILocalNotification *)notification
这是本地通知点击进入执行的方法