写在前面:一定要让AppDelegate类遵守UIApplicationDelegate协议
UIApplication相关代理方法的含义
代理方法1:APP第一次运行就会执行
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions NS_AVAILABLE_IOS(3_0);
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
// 各种三方key以及id的配置
// 注册APNS
// 自定义启动页(例如,gif动态图)的配置
// 等等
return YES;
}
代理方法2:APP在视野中消失(挂起)就会执行- (void)applicationWillResignActive:(UIApplication *)application;
消失的7个例子:
跳到APP外打电话。
有人打电话进来。
设置定位。
从底部滑出工具栏。
从顶部滑出工具栏。
按一次或者两次home键。
锁屏。
- (void)applicationWillResignActive:(UIApplication *)application{
ZBManager *myManager = [ZBManager sharedManager];
// 保存一个全局单例,标识这个APP之前消失过。这里我标记这个适用于禁止执行applicationDidBecomeActive方法。因为applicationDidBecomeActive方法会发送网络请求,请求数据。
myManager.BottomOrBackGroundState = YES;
NSLog(@"APP在视野中消失啦");
}
代理方法3:APP复原时就会执行- (void)applicationDidBecomeActive:(UIApplication *)application;
两个例子:
第一次启动APP(待启动页的那种)。
由applicationWillResignActive
回到APP的时候。
- (void)applicationDidBecomeActive:(UIApplication *)application{
// 加载引导页、登录等等
NSLog(@"APP被激活啦");
}
代理方法4:APP 人为关机或者没电关机就会执行- (void)applicationWillTerminate:(UIApplication *)application;
代理方法5:APP进入后台就会执行- (void)applicationDidEnterBackground:(UIApplication *)application NS_AVAILABLE_IOS(4_0);
- (void)applicationDidEnterBackground:(UIApplication *)application{
NSLog(@"APP进入后台啦");
}
代理方法6:APP进入前台就会执行- (void)applicationWillEnterForeground:(UIApplication *)application NS_AVAILABLE_IOS(4_0);
- (void)applicationWillEnterForeground:(UIApplication *)application{
NSLog(@"APP进入前台啦");
}