1

現在、Firebase Cloud Messagingを使用してチャットアプリケーションを実装しており、プッシュ通知を送信しています。 APIコールのnotificationフィールドを使用すると、サービスを手動で作成してメッセージをリッスンすることなく、Firebaseによって自動的に表示されます。Firebase Cloud Messaging(FCM)で重複する通知を防止する方法

プッシュ通知はかなり一般的です。「あなたは新しいメッセージがあります!」と書かれていますので、新しいメッセージを追加するたびに新しいメッセージを追加することはできません。メッセージがあれば、体の内容は前のものと同じです。

サービスを実装せずに通知を手動で処理することは可能でしょうか?ドキュメントのこのユースケースの参照は見つかりませんでした。

+1

サービスを手動で使用する必要がある場合 – tyczj

答えて

0

アプリケーションがフォアグラウンドにある場合、FirebaseMessagingServiceのonReceiveで通知を受け取ります。その他の通知は、システム通知トレイに配信されます。あなたは通知のIDを知らないので、あなたはそれを取得できません。また、通知を受け取った時点でアプリケーションが実行されていない可能性もあります。したがって、論理的にはサービスを実装してもNOTが可能です。さて、別の方法で問題を解決することができます。 ファイアベースデータベースクラウド機能と組み合わせて使用​​できます。 developer guide of cloud functionsを見るだけで、あなたが望むものを実現するのに役立つことがわかります。ソリューションスケルトンとして:Firebaseデータベースにメッセージを投稿し、クラウド機能を使用して通知を送信します。受信者がメッセージの更新を読み取ると、メッセージが反映されるようにデータベースが読み取られ、変数が表示されます。最後のメッセージの見た値の値を読み取り、それが真である場合にのみ通知を送信するように、クラウドの機能を設計します。お役に立てれば。

+0

はい、クラウド機能について多くのことを読んでいますが、アプリケーションでいくつかの設定を使用してその使用を避けたいと考えていました。おそらく、最良の方法は、APIの送信でそれを処理することです。Firebaseに送信する前に、各プッシュ通知に一意のハッシュを入れることが考えられます。 –

0

手動で処理するには、サービスを使用する必要があります。 handleIntent(インテント)FirebaseMessagingServiceに移動します。 このメソッドは、アプリケーションがフォアグラウンド、バックグラウンド、および終了状態のときに呼び出されます。重複を避けるため、super.handleIntent(インテント)に電話をかけないでください。これにより、アプリがBGまたは強制終了状態のときの自動プッシュ通知が防止されます。

これは私のために働いた。

関連する問題