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

applicationWillResignActive called without reason on iOS 10 ( swift 3 )

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

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

--> 点击应用图标

我每次打开应用程序时都会重复此序列。

看起来好像有什么东西迫使我的应用程序以极短的延迟退出前台状态。 通常,applicationDidBecomeActive 在应用程序显示警报时(例如,如果应用程序需要用户的许可才能访问相机)或在用户单击主页按钮时调用。

1 - 仅在应用以横向模式启动时发生
2 - 它只发生在 iPhone 而不是 iPad
3 - iOS 9 设备

上不会出现此问题

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

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

所以处理它的唯一方法是在 AppDelegate 中使用变量,每次系统警报显示时该变量都会递增,而在 applicationDidBecomeActive 中递减,因此只有当该变量的值为 1 时才调用您的代码。

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