当用户在 iOS 设备上向下滑动通知中心屏幕时,UIApplication.didBecomeActiveNotification 被意外调用一次

ine*_*cii 5 nsnotificationcenter ios swift

正如标题所说,我在 iOS 11 和 12 中发现了这种意外行为。
有谁知道为什么会调用此事件,更重要的是,是否有任何解决方法可以防止系统触发此事件UIApplication.didBecomeActiveNotification事件?

以下是重现此行为的步骤:

  1. 运行应用程序。
  2. 访问 iPhone 或 iPad 上的通知中心屏幕(从设备屏幕的最顶部向下滑动)。
  3. 当通知中心屏幕到达设备屏幕底部时UIApplication.didBecomeActiveNotification会触发一个事件。

您可以简单地在 AppDelegate.swift 文件中添加一个日志进行测试,例如:

func applicationDidBecomeActive(_ application: UIApplication) {
        print("applicationDidBecomeActive")
}
Run Code Online (Sandbox Code Playgroud)

我称之为意外,因为当通知中心屏幕出现时,应用程序实际上应该转向(至少半)后台模式而不是回到前台模式,除非通知中心屏幕消失(例如通过向上滑动到上方)屏幕最顶部)。
我还观察到,当控制中心屏幕出现时,事件没有被触发。

在我的应用程序中,当应用程序进入后台(或半后台)时,我正在尝试控制视频播放器的状态。意想不到的.didBecomeActiveNotification扰乱了状态控制工作流程。

我在Open Radar上搜索过和 here 上搜索并用谷歌搜索了一段时间,没有出现这样的相关主题。

任何建议将不胜感激。谢谢你。

小智 0

func applicationWillResignActive(_ application: UIApplication)可以用来代替 .didBecomeActiveNotification,以便在应用程序进入后台或半后台状态时收到通知。

在 iPhone 或 iPad 上访问通知中心屏幕(通过从设备屏幕的最顶部向下滑动)将调用 applicationWillResignActive,如果我们向上滑动通知中心,则不会触发该应用程序。