3

Androidチャットアプリケーションを開発中です。FCM経由で各メッセージを送信し、リアルタイムDBに保存する必要があるようです。チャットを実装するFCMのfirebaseリアルタイムデータベース

メッセージの保存と送信にFirebaseリアルタイムDBを使用します。私はまだFCM経由で各メッセージ(または少なくともメッセージID)を送信する必要があります。私はそれをやっていないと、アプリがバックグラウンドにあるときだけFCMを送信すると、ユーザーはいくつかの着信メッセージを逃す可能性があることは怖いです。

デザインがWhatsAppのようなものだとします。各会話は別々のアクティビティを開き、その会話にメッセージを提示します。

など。私はAさんとチャットしていますが、このときBさんは私にメッセージを送ります。 これは、リスナーをアクティビティーではなくサービスに配置する必要があることを意味します(アクティビティーは1つのアクティブを表すため、アクティブなリスナーをアクティブにする必要があります)。そのメッセージとの会話)。

サービスでリスナーを置くのは十分信頼できないようです(もしアンドロイドがサービスを殺したらどうしますか?)再起動するまで、新しいメッセージのいくつかを見逃してしまい、関連する会話に入ると表示されます。データベース)。

上記の理由から、送信されたメッセージごとにFCM通知を送信する必要があるようです。 それは妥当に聞こえますか?信頼性の高いメッセージングを実現するためのより良い方法はありますか?

答えて

1

実際には、ユーザーがアプリを開いてフォアグラウンドにしていても、クラウドメッセージをデバイスに送信することは非常に一般的です。その場合、アプリのonMessageReveivedのメッセージは無視されます。

+0

ありがとうございます。いずれにしてもFCM経由ですべてのメッセージを送信する必要がある場合、メッセージングにリアルタイムDBを使用する利点はありません(クラウド上のメッセージバックアップを除く)。私は正しい? – user2924714

+0

データベースにはすべてのメッセージが永続的に記録されます。それがあなたのアプリに必要かどうか、あなただけが教えてください。 –

+0

FCMがミリ秒単位で送信できるメッセージの量をFCMがアプリケーションに制限しないことを確認できますか?アプリが大量のトラフィックを持っている場合、アプリサーバーは毎ミリ秒の大量のFCMを送信する必要があります。 – user2924714

関連する問題