解除通知中心时的呼叫功能

时间:2015-02-04 21:38:26

标签: ios xcode swift ios8-today-widget notificationcenter

我只是使用今天的小部件(使用Swift)编写我的第一个iOS应用程序。我想知道在解雇通知中心后,只要我的应用程序回到前台,就会调用一个函数。

我知道我可以使用Observer来检查UIApplicationWillEnterForegroundNotification,但在使用我的应用程序并再次解除通知时拉下通知中心时,我的功能不会被调用。

我的问题很简单: 用户不太可能会拉下通知中心来操纵我在应用程序中使用的数据,但我仍然需要考虑如果他们这样做会发生什么。用户应该能够通过按今天的小部件按钮来保存他当前的位置。

如果在使用我的应用程序时发生这种情况,应用程序将不会检查新数据。

1 个答案:

答案 0 :(得分:2)

我使用以下代码确定在应用程序运行时是否打开了通知中心:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
{
    BOOL notificationCenterCurrentlyDisplayed;
}

- (void) viewDidLoad
{
    [super viewDidLoad];
    notificationCenterCurrentlyDisplayed = false;
    NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
    [defaultCenter addObserver:self selector:@selector(onNotificationCenterDisplayed) name:UIApplicationWillResignActiveNotification object:nil];
    [defaultCenter addObserver:self selector:@selector(onNotificationCenterDismissed) name:UIApplicationDidBecomeActiveNotification object:nil];
}

- (void) onNotificationCenterDisplayed
{
    notificationCenterCurrentlyDisplayed = true;
    NSLog(@"Notification center has been displayed!");
}

- (void) onNotificationCenterDismissed
{
    // Reason for this check is because once the app is launched the UIApplucationDidBecomeActiveNotification is called.
    if (notificationCenterCurrentlyDisplayed)
    {
        notificationCenterCurrentlyDisplayed = false;
        NSLog(@"Notification center has been dismissed!");
    }
}
@end

当用户决定将应用程序关闭到后台时,也会调用通知中心显示方法。