我只是使用Today小部件(使用Swift)编写我的第一个iOS应用程序。我想知道在关闭通知中心后,每当我的应用返回到前台时,是否都会调用该函数。

我知道我可以使用观察器来检查UIApplicationWillEnterForegroundNotification,但是在使用我的应用程序并再次关闭它时拉下通知中心时,不会调用我的函数。

我的问题很简单:
用户几乎不可能拉低通知中心来操纵我在应用程序中使用的数据,但是我仍然必须考虑如果这样做了会发生什么。该用户应该能够通过按下“今日”小部件按钮来保存其当前位置。

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

最佳答案

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

#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

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

10-07 18:36