メッセージを確実に受信することは、Android メッセージ エクスペリエンスの最も重要な機能です。また、システムの健全性とバッテリー駆動時間を考慮してメッセージを実装することも重要です。このドキュメントでは、Android アプリでメッセージを常に効率的かつ確実に受信するための主要な戦略とツールについて説明します。
メッセージ配信のメカニズム
信頼性の高いメッセージングに最適なアプローチは、アプリの具体的な要件によって異なります。次のような要素を考慮します。
- 現在のリアルタイムのニーズ
- メッセージの頻度
- バッテリーの制約
フォアグラウンド リアルタイム メッセージング
アプリがフォアグラウンドにある場合、ユーザーは通常、ある程度の量の情報を期待しており、次のようなことを知りたいと考えています。
- メッセージの相手はデバイスに表示されていますか?
- 入力中ですか?
- メッセージは読まれましたか?
このようなリアルタイム データ交換をサポートする一般的な方法は、WebSockets などのクライアント サーバー プロトコルを使用することです。WebSocket を使用すると、アプリとサーバー間で永続的な全二重通信が可能になります。OKHTTP ライブラリには、Android クライアントで使用できる WebSocket プロトコルの実装が含まれています。
Firebase Realtime Database には、このような通信をユーザーに代わって処理できる、事前構築済みのバックエンドとクライアント フロントエンドが用意されています。クライアントとサーバー間のリアルタイム通信には、内部的に WebSocket が使用されます。
バックグラウンド リアルタイム メッセージング
アプリがフォアグラウンドになくなったときは、システムの健全性とバッテリー寿命に悪影響を及ぼす処理を避けることが重要です。メッセージ通知を確実に配信することは依然として重要であるため、Firebase Cloud Messaging(FCM)を利用することをおすすめします。
FCM は、Android(およびその他の)デバイスに通知とデータ メッセージを効率的に送信するクロスプラットフォーム メッセージング ソリューションです。Google サービスを搭載したデバイス向けの Android トランスポート レイヤ(ATL)を活用して、アプリが実行されていないときに変更を通知できるようにします。メッセージ配信のタイミングは、デバイスの状態、メッセージの優先度、アプリが Doze またはアプリ スタンバイによる制限の対象かどうかによって異なります。
メッセージ配信の信頼性を高める
メッセージ配信をさらに堅牢にするには、次の戦略を検討してください。
WorkManagerを使用して、デバイスがネットワークに接続されているとき、および(理想的には)デバイスが充電器に接続されているときに、アプリを定期的に起動して新しいメッセージを確認します。- Firebase コンソールや FCM Data API の Android SDK 配信指標などのツールを使用して、FCM 配信に関する分析情報を取得します。
- Firebase Crashlytics などのロギング メカニズムとツールを使用して、メッセージ配信の問題をモニタリングし、トラブルシューティングします。