1

今日のウィジェットを使用して(Swiftを使用して)最初のiOSアプリをコーディングしています。通知センターを閉じた後、アプリがフォアグラウンドに戻るたびに呼び出される関数があるかどうか疑問に思っていました.

オブザーバーを使用して確認できることはわかってUIApplicationWillEnterForegroundNotificationいますが、アプリの使用中に通知センターをプルダウンして再度閉じると、関数が呼び出されません。

私の問題は単純です。アプリで使用しているデータを操作するために、ユーザーが通知センターをプルダウンする可能性はほとんどありません。ユーザーは、today ウィジェット ボタンを押すことで現在地を保存できるはずです。

アプリの使用中にそれが発生した場合、アプリは新しいデータをチェックしません。

4

1 に答える 1

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

また、通知センターが表示されたメソッドは、ユーザーがアプリケーションをバックグラウンドで閉じることを決定したときにも呼び出されます。

于 2015-02-04T21:59:44.463 に答える