2

ローカル通知(またはそのプッシュ)を処理するさまざまな状態に対処する方法について、私は絶対にわかりません。

これらは、私が理解している限り、さまざまなシナリオです (間違っている場合は修正してください)。

を。アプリはフォアグラウンドにありました

    - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{}

呼び出されており、:application.applicationState == UIApplicationStateActive

b. アプリがバックグラウンドにあった

    - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{}

が呼び出されており、 application.applicationState == UIApplicationStateInactive

c. アプリが終了したので:

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

最初とあとがきが呼び出されています:

    - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{}

where application.applicationState == UIApplicationStateActive が呼び出されています (didFinishLanching の後にアクティブになったため...

これら 3 つのシナリオのそれぞれで、私は異なる行動を取る必要があります。

を。アプリがフォアグラウンドにある場合は、通知本文を示すアラートを表示し、ユーザーが続行ボタンでアラートを却下した場合にスタックにいくつかのビュー コントローラーをプッシュしたいと考えています。

b. アプリがバックグラウンドにあり、ユーザーがアラートを押した場合、ユーザーがアラートを押すと、その意味に従うことを示しているため、ビューコントローラーをスタックに自動的にプッシュしたいと思います。

c. b と同じシナリオ。ユーザーはアラートを押して、関連するビューが表示されることを期待しています。

私の質問は、関連するビューを navigationViewController にプッシュする方法/場所と、フォアグラウンドで通知を受信したときにアラートを表示する方法です。

問題は、シナリオ c にシナリオ a が含まれていることです。これは、didFinishlaunching が呼び出された後 (そこで通知を処理したかどうかは気にしないでください)、didRecieveLocalNotification が呼び出されることを意味します (フォアグラウンドで通知を受け取ったかのように) が、この場合はアラートを表示したくありません。 .

そもそも仮定について間違っていますか?

4

1 に答える 1