3

アプリがフォアグラウンドで実行されている間はリモート通知を無視し、通知バーの通知をクリックしてアプリを起動するときに応答するにはどうすればよいでしょうか?</p>

4

2 に答える 2

2

アプリがフォアグラウンドにある場合、通知は通知バーに表示されません。通知ペイロードはapplication:didReceiveRemoteNotification:メソッドに渡されますが、必要に応じて無視できます。

通知が届いたときにアプリがバックグラウンドで実行されている場合、アプリを開いたときにapplication:didReceiveRemoteNotification:も呼び出されます。これらの 2 つのケースは、次のコードで区別できます。

-(void)application:(UIApplication *)app didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if([app applicationState] == UIApplicationStateInactive)
    {
        //application was running in the background
    }
}

通知をタップしてアプリを開くと、通知ペイロードが と呼ばれる別のメソッドに渡されapplication:didFinishLaunchingWithOptions:、そこで処理できます。

于 2013-08-02T10:25:42.640 に答える
0

私はこのコンビの方が好きです。で追加した関数がないと、通知タップからアプリが最初にメモリに起動されたときに、にdidFinishLaunchingWithOptions含まれるロジックを介して通知がディープ リンクされません。didReceiveRemoteNotification

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // All your nice startup code

    // ...

    // Hook for notifications
    if (launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]) {
        [self application:application didReceiveRemoteNotification:launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]];
    }
}

これらはどちらも AppDelegate にあります。

- (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo {

    if (application.applicationState == UIApplicationStateActive) {
        return;
    }

    // Do anything you want with the notification, such as deep linking

    // ...
}
于 2015-02-24T18:24:08.277 に答える