iOS关于applicationWillResignActive

iOS关于applicationWillResignActive

背景:杀死app进程后点击推送打开app本应该进入相应页面,但却因为Face ID验证,无法跳转。

一、什么时候调用applicationWillResignActive?

  1. 屏幕锁屏
  2. 从前台进入后台
  3. 来电、短信弹窗
  4. Face ID或Touch ID验证

特注:指纹识别、面容识别的弹窗的级别非常之高,高到离谱,经过验证应用程序内部没有比指纹识别的window的级别更高的UIWindowLevel,也就说了他是系统级的弹窗。需要注意的是,如果指纹弹窗显示和消失应用程序会调用:

  - (void)applicationWillResignActive:(UIApplication *)application;
  - (void)applicationDidBecomeActive:(UIApplication *)application;

二、applicationWillResignActive中一般执行那些操作呢?

  1. 清理临时数据
  2. 暂停正在进行的任务
  3. 禁用计时器
  4. 限制OpenGL ES帧速率
  5. 游戏应该使用这种方法来暂停游戏。

三、如果在进行Face ID或者Touch ID验证时不想执行applicationWillResignActive中的操作怎么办?

可以转到applicationDidEnterBackground中执行相关操作,这个函数不会因Face ID或者Touch ID弹窗验证而执行,他只会在应用真正进入到后台的时候才会调用,可以避免清理掉一些关键信息导致app出现bug。

四、app前后台切换时执行函数顺序

//首次运行:
 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 
- (void)applicationDidBecomeActive:(UIApplication *)application
 
//首次关闭(home):
 
- (void)applicationWillResignActive:(UIApplication *)application
 
- (void)applicationDidEnterBackground:(UIApplication *)application

 //再次运行:
 
- (void)applicationWillEnterForeground:(UIApplication *)application
 
- (void)applicationDidBecomeActive:(UIApplication *)application
 
//再次关闭:
 
- (void)applicationWillResignActive:(UIApplication *)application
 
- (void)applicationDidEnterBackground:(UIApplication *)application

五、如何模拟app被杀死后再启动的状态?

xcode点击左上角要运行的项目图标->点击edit Scheme->Wait for executable to be launched
iOS关于applicationWillResignActive_第1张图片
iOS关于applicationWillResignActive_第2张图片
这样的话,app就会等你唤醒才会打开,可以选择widget唤醒、点击推送唤醒等等方式打开app,以达到杀死app后再打开的监控。

你可能感兴趣的:(oc,iOS_App,移动开发)