【问题标题】:How to check only when "Notification Center or Control Center" are triggered in applicationDidBecomeActive如何仅在 applicationDidBecomeActive 中触发“通知中心或控制中心”时检查
【发布时间】:2017-02-16 05:25:49
【问题描述】:

众所周知,当我们打开和关闭底部控制中心/顶部通知中心时,applicationDidBecomeActive 会调用。

但我想知道 仅因为这两个事件在 applicationDidBecomeActive 中,以便在用户打开和关闭通知中心或控制中心时处理一些功能。

- (void)applicationDidBecomeActive:(UIApplication *)application
{

    if(/*Code for DidBecomeActive Called Because of Contol Center*/ --- )
    {

    }


if(/*Code for DidBecomeActive Called Because of Notification Center*/)
    {

    }


}

谁帮我看看

由于通知中心而调用了 DidBecomeActive 的代码

由于控制中心而调用了 DidBecomeActive 的代码

【问题讨论】:

标签: ios objective-c xcode notificationcenter control-center


【解决方案1】:

我不确定您能否完全实现您想要的 - 但您可以接近。当您将通知中心拉下(或控制中心向上,或进入应用切换器)时,您将获得:

applicationWillResignActive

关闭面板并返回应用会调用:

applicationDidBecomeActive

现在完全后台应用程序改为调用此序列:

applicationWillResignActive
applicationDidEnterBackground

然后重新打开应用调用:

applicationWillEnterForeground
applicationDidBecomeActive

所以你需要做的就是使用一个标志来跟踪序列:

@property (nonatomic, readwrite) BOOL wasControlCenter;

- (void)applicationWillResignActive:(UIApplication *)application {
    _wasControlCenter = YES;
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
    _wasControlCenter = NO;
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    _wasControlCenter = NO;
}

- (void)applicationDidBecomeActive:(UIApplication *)application {

    if (_wasControlCenter) {
        // Do your thing
    }    
}

很遗憾,我认为没有办法区分控制中心、通知中心、应用切换器等。

【讨论】:

  • 使用 iOS13 进行测试 applicationWillResignActive 在进入控制面板时不会被触发,但 applicationDidBecomeActive 会在你回来时触发。
  • 通过打开openSettingsURLString 与仅拉下控制中心/通知中心查看应用程序进入操作系统设置之间的回调差异,成功验证。调查结果:当您拥有控制中心/通知中心时,您并没有在后台运行应用程序,您仍然可以以模糊的方式看到应用程序,您只是将其退出活动状态。当控制中心放开时,应用程序再次激活。但是,对于进入设置应用程序,事件是这样的:resignActive --> EnterBackground,然后返回到应用程序:EnterForeground -->BecomeActive
猜你喜欢
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-17
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多