0

众所周知,当我们打开和关闭底部控制中心/顶部通知中心时,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 的代码

4

1 回答 1

4

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

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
    }    
}

不幸的是,我认为没有办法区分控制中心、通知中心、应用程序切换器等。

于 2017-02-16T08:13:06.357 回答