3

私の問題はこのようなものです。

2 ~ 10 分後に発生するイベントを通知してアプリを閉じるようにサーバーにリクエストを送信すると、サーバーはプッシュ通知を介してそのリクエストに応答します。サーバーが通知に応答するまで、アプリがフォアグラウンドに留まる場合に備えて、アプリはアニメーションを表示します。

通知を受け取ると、アプリを開くと、アニメーションが停止し、通知からのデータが表示されます。私の問題は、通知からアプリを開かない場合 (アイコンから開く場合)、「didReceiveRemoteNotification」のコールバック メソッドが呼び出されないため、アニメーションが引き続き表示されることです。

アプリがアイコンから開かれたか、通知 (ローカルまたはプッシュ) から開かれたかを確認することはできますか?

4

3 に答える 3

2

SDK ヘルプのapplication:didFinishLaunchingWithOptions:段落では、さまざまな開始/ウェイクアップ シナリオでどのデリゲート メソッドが呼び出されるかについて非常によく説明されています (たとえば、登録済みの URL ハンドラーをクリックする、サポートされている MIME タイプを開く、リモート/ローカル通知に応答する、ホーム画面のアイコンをクリックするなど)。など)

また、上記のイベントの時点でアプリケーションがすでに実行されている場合は、. とは別にdidReceiveRemoteNotification、適切なデリゲート メソッドが呼び出されます ( . 呼び出されたコールバックの組み合わせから、どのイベントが発生したかを把握できます。openURLapplicationDidBecomeActive:

于 2012-05-23T16:22:35.777 に答える
1

これは、launchOptions オブジェクトを確認することで実行できます。アプリを直接開いたのか、通知の結果として開いたのかがわかります。

次のようなことができます。

if(!launchOptions){
    NSLog(@"App invoked directly");
}
于 2012-05-23T16:17:18.987 に答える