ローカル通知(またはそのプッシュ)を処理するさまざまな状態に対処する方法について、私は絶対にわかりません。
これらは、私が理解している限り、さまざまなシナリオです (間違っている場合は修正してください)。
を。アプリはフォアグラウンドにありました
- (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 が呼び出されることを意味します (フォアグラウンドで通知を受け取ったかのように) が、この場合はアラートを表示したくありません。 .
そもそも仮定について間違っていますか?