在iOS 10上无理由调用applicationWillResignActive(swift 3)

当我在iOS 10上启动我的应用程序时,可以看到在短暂的延迟之后,Appdelegate函数 – > applicationWillResignActive()被调用。 这没有理由。 应用程序仍然处于活动状态,并处于前台状态,并且应用程序继续正常运行。

请参阅上面我的应用程序的生命周期:

– >点击应用程序图标

  • 应用程序启动
  • 应用程序 – > didFinishLaunchingWithOptions
  • 应用程序 – > applicationDidBecomeActive
  • RootViewController – > viewDidAppear
  • 应用程序 – > applicationWillResignActive < – 问题!
  • 应用程序 – > applicationDidBecomeActive < – 再次??
  • 在这一点上,应用程序仍然运行没有错误

每次打开应用程序时都会重复这个顺序。

它看起来好像有东西强迫我的应用程序退出前台状态超短暂的延迟。 通常,当应用程序显示警报(例如,如果应用程序需要用户访问摄像头的权限)或者用户单击主页button时,会调用applicationDidBecomeActive。

1 – 只有当应用程序以横向模式启动时才会发生
2 – 它只发生在iPhone上,而不是在iPad上
3 – 在iOS 9设备上不会发生此问题

有没有人注意到这个问题?

问题是,解雇系统服务警报(位置,推送通知,照片)后第二次调用,

所以处理它的唯一方法是在AppDelegate中使用varibale,这会增加每次在applicationDidBecomeActive显示和递减一些系统警报,所以只有当这个variables的值是1时才调用你的代码。

另一个有趣的事情是,当系统警报显示时, applicationDidEnterBackground不会调用,因此我们可以使用这个信息来决定我们是否应该在applicationDidBecomeActive调用我们的代码(但仍然可能是不太可靠的解决scheme)