browser.gcm で Firebase Cloud Messaging(FCM)を使用する

browser.gcm を使用して、エンドユーザーにメッセージを送信したり、エンドユーザーからメッセージを受信したりできます。Firebase Cloud Messaging(FCM)上に構築されているため、設定する必要がある外部サービスに依存します。このハウツーでは、拡張機能で動作させるために必要な手順をすべて説明します。

browser.gcm は引き続きサポートされますが、10 年以上前に Push 標準が制定される前に作成されたものです。一般に、拡張機能固有の API ではなく、ウェブ標準を使用することが常にベスト プラクティスです。browser.gcm を使用する特別な理由がない限り、Push を使用することをおすすめします。

前提条件

browser.gcm を使用するには、Firebase アカウントを設定する必要があります。

Firebase.com のホームページ。
Firebase.com のホームページ

アカウントを作成したら、Firebase コンソールを開き、使用する既存のプロジェクトを選択するか、拡張機能用の新しいプロジェクトを作成します。

Firebase コンソールのプロジェクト リストのスクリーンショット。
Firebase コンソールのプロジェクト リスト

Cloud Messaging の設定ページに進みます。

Firebase Cloud Messaging 設定ページのスクリーンショット。
Firebase Cloud Messaging の設定ページ

このプロジェクトに既存のクラウド メッセージング アカウントがある場合は、表示されている数値の送信者 ID をコピーします。

Cloud Messaging が有効になっていない場合は、Google Cloud 内のプロジェクトで Firebase Cloud Messaging API を有効にする必要があります。次の図は、Firebase の設定でこのページに直接リンクされている場所を示しています。

Google Cloud で Firebase Messaging API を有効にするためのリンクの場所を示すスクリーンショット。
Firebase で Google Cloud の設定リンクを開く

有効にしたら、Cloud Messaging の設定ページに戻り、送信者 ID をコピーします。

browser.gcm を構成する

Firebase から送信者 ID を取得したので、メッセージをリッスンするように拡張機能を構成できます。まず、拡張機能の manifest.jsongcm 権限を追加していることを確認します。

  {
    "manifest_version": 3,
    ...
    "permissions": ["gcm"]

browser.gcm API にアクセスできるようになりました。browser.gcm.register を呼び出すことで、プッシュ メッセージをリッスンするように登録できます。

メッセージをリッスンする

拡張機能で送信者 ID が登録されたら、受信メッセージを処理するコードを追加する必要があります。

Firebase なしで Firebase を使用する

browser.gcm は常に Firebase を経由しますが、外部のプッシュ メッセージ ベンダーのプロキシとして機能するように Firebase を構成できます。通常、ベンダーは Chrome 拡張機能のサポートを明示的に記載しますが、Firebase の従来のプッシュ通知をサポートするベンダーであれば、動作するはずです。プロバイダが Firebase の以前のプッシュ通知のサポートを記載している場合は、お試しください。問題が発生した場合は、プロバイダのサポートに問い合わせて、適用される制限について確認してください。

チャンネルとトピックについて

browser.gcm は、以前の Firebase Messaging API を使用しています。これは、以前の API がメッセージ チャネルをサポートしていないため重要です。プッシュされたすべてのメッセージはすべてのクライアントに送信されます。ユーザーの拡張機能がメッセージのサブセットのみに関心がある場合は、自分でフィルタリングする必要があります。

Firebase は無料アカウントとして開始されますが、一定の使用量を超えると課金されます。特定のグループにメッセージを送信する予定がある場合は、クライアントサイド フィルタリングの費用が正当化されるよりも高くなる可能性があります。この問題を回避するには、複数のプロジェクトを作成して個々のチャネルを複製します(チャネルごとに 1 つのプロジェクトと 1 つの送信者 ID)。1 つの拡張機能で登録できる送信者 ID は最大 100 個です。

また、チャンネルのサポートが必要な場合や、Firebase を介さずにプッシュ通知を使用したい場合は、Push API を使用できます。