Sendbird ChatおよびFirebaseを使用したAndroidのプッシュ通知の実装方法
はじめに:プッシュ通知とは何か、なぜ重要なのか?
プッシュ通知は、デバイスがアイドル状態であるか、バックグラウンドでクライアント アプリを実行しているときに、ユーザーのデバイスに即座に配信されるメッセージです。プッシュ通知は、重要な情報や更新情報を配信し、 アプリに対するユーザー エンゲージメントを高めるために重要です。さらに、プッシュ通知は、適切なユーザーをターゲットにし、意味のあるコンテンツを配信し、コンバージョン率を高め、顧客ケア戦略を強化できる強力なマーケティング チャネルです。実際、RubyGarage によると、プッシュ通知を導入している組織は、導入していない企業に比べて顧客維持率が 3 倍高く、エンゲージメントが 88% 高いそうです。 モバイル プッシュ通知に関するガイドには、プッシュ通知、その利点、使用方法について知っておくべきすべてのことが記載されています。
このチュートリアルでは、Android プッシュ通知を実装するための手順を段階的に説明します。
前提条件
- Sendbird アカウントを作成する
- Sendbird Chat が Android アプリで適切に動作することを確認します。 Kotlin 実装ガイドまたはこのチュートリアルを確認してください。 UIKit を使用して Android チャット アプリを構築します。 ドキュメントには、Android アプリにリアルタイム チャットを実装するための追加のガイダンスが含まれています。
Android クライアント アプリのプッシュ通知は Firebase Cloud Messaging (FCM) または Huawei Mobile Service (HMS) を使用して送信され、これらにはアプリが通知に応答するために必要なカスタム データが含まれていることを理解することが重要です。メッセージがアプリから (Android 用 Chat SDK 経由で) Sendbird サーバーに送信されると、サーバーは FCM または HMS と通信し、FCM または HMS が Android デバイスにプッシュ通知を配信します。この記事では、FCM を使用したプッシュ通知の設定に焦点を当てます。
Sendbird は、プッシュ通知に対して、一般的なプッシュ通知とマルチデバイス サポートを備えたプッシュ通知の 2 つのオプションを提供します。
一般的なプッシュ通知は、単一デバイス ユーザーとマルチデバイス ユーザーの両方をサポートし、ユーザーがすべてのデバイスから完全にオフラインになっている (サーバーから切断されている) 場合にのみ配信されます。つまり、ユーザーが 1 つ以上のデバイスでオンラインになっている場合、通知は配信されず、どのデバイスにも表示されません。一方、マルチデバイスをサポートするプッシュ通知は、ユーザーが 1 つ以上のデバイスでオンラインである場合でも、すべてのオフライン デバイスに配信されます。
Android向けプッシュ通知:FCM
FCM メッセージには、通知メッセージとデータ メッセージの 2 種類があります。 Firebase ドキュメントによると、「通知メッセージには、ユーザーに表示される事前定義されたキーのセットと、カスタム キーと値のペアのオプションのデータ ペイロードが含まれています。」対照的に、データ メッセージにはユーザー定義のキーと値のペアのみが含まれます。 Sendbird はデータ メッセージを使用し、クライアント アプリがこれらのカスタム キーと値のペアで構成されるカスタム メッセージ ペイロードを作成できるようにします。
次の手順に従って、FCM のプッシュ通知を設定します。開始する前に、Firebase コンソールにアクセスできることを確認してください。
飛び込んでみましょう! 💻
ステップ1:FCMのサーバーキーを取得する
Sendbird サーバーは、ユーザーに代わって通知リクエストを FCM に送信するために FCM サーバー キーを必要とします。 FCM サーバー キーは次のようにして表示できます。
1. Firebase コンソールにログインします。新しい Firebase プロジェクトを作成するか、既存のプロジェクトがある場合はそれを使用します。
2. プロジェクトを開き、スクリーンショットに示すように「プロジェクト設定」に移動します。
3. [クラウド メッセージング] > [クラウド メッセージング] に移動します。資格情報をプロジェクトし、後で使用するためにサーバー キーをコピーします。
ステップ2:FCMサーバーキーをSendbirdダッシュボードに登録する
次のように、ダッシュボードからサーバー キーを Sendbird サーバーに登録します。サーバー キーは、Chat Platform API のFCM プッシュ構成の追加アクションを使用して登録することもできることに注意してください。
1. Sendbird ダッシュボードにログインし、[設定] > [設定] に移動します。チャット >通知」。
2. [通知] をオンにし、[すべてオフラインのときにデバイスに送信] オプションを選択します。
3. FCM 認証情報の横にある [認証情報を追加] ボタンをクリックします。手順1でコピーしたFCMサーバーキーを入力します。
ステップ3:AndroidプロジェクトにFCMクライアントアプリを設定する
次に、FCM 構成と依存関係を Android プロジェクトに追加します。
1. FCM コンソールでプロジェクトに戻ります。 「アプリを追加」をクリックし、Android プラットフォームを選択します
2. アプリの追加ウィザードで、パッケージ名を入力します。ヒント: パッケージ名は通常、アプリレベルの「build.gradle」ファイルの「applicationId」です。
3.「google-services.json」ファイルをダウンロードし、Android アプリ モジュールのルート ディレクトリに配置します。
4.以下のように、Cloud Messaging Android ライブラリの依存関係を build.gradle ファイルに追加します。
注: firebase-messaging のバージョンは 19.0.1 以降である必要があります。
dependencies { ... implementation 'com.google.firebase:firebase-messaging:20.1.0' }
ステップ4:Sendbirdサーバーにプッシュトークンを登録する
Android デバイス上の特定のクライアント アプリに通知メッセージを送信するには、FCM にはクライアント アプリが発行したアプリ インスタンスの登録トークンが必要です。したがって、Sendbird サーバーには、ユーザーに代わって FCM に通知リクエストを送信するために、すべてのクライアント アプリ インスタンスの登録トークンも必要です。
アプリの初期化時に、FCM SDK はユーザーのデバイス上のクライアント アプリ インスタンス用の一意のアプリ固有の登録トークンを生成します。 FCM は、この登録トークンを使用して、通知メッセージの送信先のデバイスを決定します。このトークンにアクセスするには、「com.sendbird.android.SendBirdPushHandler」を拡張し、「onNewToken」をオーバーライドします。 「SendBirdPushHandler」は、このトークンを内部的に Sendbird サーバーに登録します。
サンプル実装は次のとおりです。
登録されたプッシュ トークンは、ダッシュボードの [ユーザー] > の下に表示されます。ユーザーID >チャット':
ステップ5:プッシュイベントハンドラーを追加する
現在のユーザーのプッシュ通知イベントに関する情報を Sendbird サーバーから受信するには、「MyFireBaseMessagingService」インスタンスをイベント ハンドラーとして「SendBirdPushHelper」に登録します。これを「Application」インスタンスの「onCreate()」メソッドで次のように実行します。
また、ユーザーが Sendbird サーバーに接続するときに、次のように「MyFireBaseMessagingService」インスタンスを登録します。
また、ユーザーを Sendbird サーバーから切断する前に、すべてのプッシュ トークンの登録を解除して、ユーザーが通知を受け取らないようにします。
ステップ6:FCMメッセージペイロードを処理する
前述したように、Sendbird サーバーはプッシュ通知ペイロードを FCM データ メッセージとして送信します。ペイロードは、message と sendbird の 2 つのプロパティで構成されます。メッセージ プロパティは、Sendbird ダッシュボードで定義した通知テンプレートに従って生成される文字列です。 sendbird プロパティは、ユーザーが送信したメッセージに関するすべての情報を含む JSON オブジェクトです。
サンプル実装に示されているように、ステップ 4 では、カスタムの「sendNotification()」メソッドを使用して、解析されたメッセージを通知としてユーザーに表示できます。
プッシュ通知のトラブルシューティングのヒント
プッシュ通知のトラブルシューティングは複雑になる場合があります。これを行うためのヒントをいくつか紹介します。
- 開発者がプッシュ通知のデバッグとトラブルシューティングを容易にするために、便利なテスター ツールを構築しました。このツールの使用方法を理解するには、このチュートリアルを参照してください。ツールにはSendbird ダッシュボード。
- Android チャット プッシュ通知のトラブルシューティングについては、この包括的なガイドを確認してください。
- 障害状態をデバッグしたい場合は、FCM エラー コードを参照してください。