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

时间:2019-05-20 06:55:36

标签: ios swift nsnotificationcenter

就像标题中所说的那样,我在iOS 11和12中发现了意外行为。
有谁知道为什么调用此事件,并且更重要的是,是否有任何变通办法来防止系统触发此UIApplication.didBecomeActiveNotification事件?

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

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

您只需在AppDelegate.swift文件中添加日志即可进行测试,例如:

func applicationDidBecomeActive(_ application: UIApplication) {
        print("applicationDidBecomeActive")
}

我将其称为意外,因为当出现“通知中心屏幕”时,除非通知中心屏幕出现,否则应用程序应从字面意义上应转换为(至少是半)后台模式,而不应返回至前景模式。消失(例如,向上滑动到屏幕的最上方)。
我还观察到,“控制中心”屏幕显示时,事件并未触发。

在我的应用中,我尝试控制应用进入背景(或半背景)时的视频播放器状态。意外的.didBecomeActiveNotification事件使状态控制工作流程烦恼。

我在Open Radar上搜索,然后在Google上搜索了一段时间,但没有出现相关主题。

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

1 个答案:

答案 0 :(得分:0)

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

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