2

のさまざまなシナリオを特定しようとしていUIApplication didReceiveLocalNotification:ます。アプリが非アクティブなときにユーザーが通知をクリックすると、対応する UI ページに移動する必要があります。それ以外の場合、ユーザーが通知をタップせずにアプリを開いた場合、中断した UI ページにとどまらせる必要があります。

UILocalNotificationただ、自分で予定を立てていたので少し問題があります。

[[UIApplication sharedApplication] scheduleLocalNotification:scheduledAlert];

したがって、iOS によって起動されるたびに、ステータス バーの通知を手動でクリックすると、コールバックと同じデリゲート メソッドが呼び出されます。

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

アプリが非アクティブ モードのときの起動回数のカウント、1 のカウントは iOS の起動、2 のカウントはユーザーのクリック、相対カウント管理コードなどのトリッキーなハックを試しました。

しかし、これがベストプラクティスになるとは思いません。同じ機能を持つ iOS Messages アプリケーションを確認しました。ステータスバーを下にスクロールするなど、アプリを非アクティブモードにするUILocalNotificationと、タッチからであることを判断する (テキスト編集モードを開く) か、アプリに戻る (前の状態のままにする) ことができます。 .

ここで最善の解決策を教えていただければ幸いです。

4

2 に答える 2

0

NSMutableDictionary を設定したカスタム キーと値のペアを使用し、それを UILocalNotification.userInfo に割り当てて、さまざまなシナリオを伝えます。

于 2013-05-17T20:23:27.437 に答える
-1

バックグラウンドから来た場合にのみ通知を処理するように、アプリの状態を確認します。

UIApplicationState state = [application applicationState];
if (state == UIApplicationStateInactive) {
    // Your  Code Here
} else {

}
于 2014-10-01T05:02:58.997 に答える