2016-07-13 15 views
0

私はFirebase Cloud Messagingを使用してデータペイロード付きの通知をアプリに送信しています。却下時にアンドロイド通知のデータペイロードを取得

通知を送信すると、アプリが実行中(フォアグラウンド)の場合、onMessageReceived()FirebaseMessagingServiceクラスからオーバーライドするデータが取得されます。

私のアプリが実行されていない場合、通知は "システムトレイ"に送信され、ユーザーのクリックが通知されると私のアプリが起動し、私はgetExtrasのインテントのデータを取得できます。

しかし、ユーザーが「システムトレイ」で通知を却下した場合、どのようにデータを取得できますか?

これを取得するために通知に「耳を傾ける」バックグラウンドサービスを書く必要がありますか?

+1

firebaseが通知を生成させる代わりに、通知を自分で管理する必要があると思います。 –

答えて

0

だから、基本的にそのデータを保存したいですか?

そのデータを保存する場合は、OnReceive()メソッドでコードを記述し、その中にデータベース挿入コードを記述します。

「Dismissed = true」のようにフラグを1つ入れてください。 通知を開いて偽にすると結果が表示されます。

アプリの通知が却下されたかどうかを特定する方法はありません。したがって、そのデータを手動で更新する必要があります。

+0

私はonMessageReceived()を使ってデータを保存しています。 問題は、アプリケーションの実行中にonMessageReceived()が呼び出されるということです。 私のアプリケーションが実行されていない場合、通知は「通知トレイ」への配信であり、この方法では、ユーザーが通知を「開く」場合、intent.getExtras()によってデータが取得されます。 通知を却下した場合、データが失われて取得できなくなります。 – Eduvm

1

Firebaseコンソールから通知を送信しているようです。これらのメッセージは常にnotification messagesです。 notification messageに付随するデータペイロードがある場合、そのデータはユーザーが通知をタップした場合にのみアプリケーションで使用できます。ユーザーが通知をタップしないと、そのデータはあなたのアプリで利用できなくなります。したがって、アプリに重要なデータを送信するためにnotification messagesを使用しないでください。

data messagesを送信する場合は、常にonMessageReceivedコールバックで処理されます。その時点で、メッセージを静かに処理するか、独自の通知を表示することができます。アプリケーションにメッセージのデータを処理する機会があることを確認したい場合は、data messagesを使用してください。

+0

Firebaseコンソールを使用していません。 'to' => "/ topic/test"、 「通知」=>「テスト」、 'データ' =>「テスト」のような通知とデータメッセージを一緒に送信するPHPコードを書きました。 しかし、Firebaseのドキュメントには、通知のみ、データのみ、またはその両方を送信できることが記載されています。私はそれが動作するかどうかをテストするためだけにデータを送信しようとします – Eduvm

+0

FYIそれは/ topics/testでなければなりません、また通知とデータペイロードは、 –

+0

こんにちは@Arthur。私はメッセージをどのように送信しているかの例としてこれを入れています。 実際にはJSONを作成し、POSTをFirebaseサーバーに送信します。 – Eduvm

関連する問題