JavaScript Firebase Cloud Messaging クライアント アプリを設定する

FCM JavaScript API を使用すると、サービス ワーカーに対応している次のブラウザのウェブアプリで通知メッセージを受信できます。次のようなブラウザがあります。

  • Chrome 50 以降
  • Firefox 44 以降
  • Opera Mobile 37 以降

メッセージの送信の説明に沿って、HTTP および XMPP アプリサーバー プロトコルを使用してメッセージを JavaScript クライアントに送信します。Firebase コンソールからメッセージを送信することはできません。

FCM JavaScript API を使い始めるには、Firebase をウェブアプリに追加してから、登録トークンにアクセスするためのロジックを追加する必要があります。

Firebase を JavaScript プロジェクトに追加する

まだ追加していない場合は、Firebase を JavaScript プロジェクトに追加します

メッセージを受信するようにブラウザを設定する

ハードコード値 gcm_sender_id を指定するウェブアプリ マニフェストを追加する必要があります。このハードコード値は、FCM がこのアプリに対するメッセージ送信を許可されていることを示します。すでにアプリに manifest.json 設定ファイルが存在する場合は、次に示す正確なブラウザ送信者 ID を追加してください(値を変更しないでください)。

{
  "//": "Some browsers will use this to enable push notifications.",
  "//": "It is the same for all projects, this is not your project's sender ID",
  "gcm_sender_id": "103953800507"
}

メッセージング オブジェクトの取得

// Retrieve Firebase Messaging object.
const messaging = firebase.messaging();

通知の受信許可を求める

メソッド messaging.requestPermission() は、ブラウザでアプリが通知を受け取れるようにするかどうか、ユーザーに許可を求める同意ダイアログを表示します。同意が得られなかった場合、FCM 登録トークン リクエストはエラーになります。

messaging.requestPermission()
.then(function() {
  console.log('Notification permission granted.');
  // TODO(developer): Retrieve an Instance ID token for use with FCM.
  // ...
})
.catch(function(err) {
  console.log('Unable to get permission to notify.', err);
});

登録トークンにアクセスする

このセクションでは、アプリ インスタンス用の登録トークンを取得する方法と、トークン更新イベントをモニタリングする方法について説明します。トークンは初期起動後にローテーションされている可能性があるため、トークン更新をモニタリングして、更新された最新の登録トークンを常に取得する必要があります。

登録トークンは次のような場合に変更されることがあります。

  • ウェブアプリが登録トークンを削除した場合。
  • ユーザーがブラウザデータをクリアした場合。この場合、新しいトークンを取得するには getToken を呼び出します。

現在の登録トークンの取得

現在のトークンを取得する必要がある場合は、getToken を呼び出します。まだ権限が付与されていない場合、このメソッドは null を返します。そうでない場合は、トークンを返すか、エラーが原因で Promise を拒否します。

  // Get Instance ID token. Initially this makes a network call, once retrieved
  // subsequent calls to getToken will return from cache.
  messaging.getToken()
  .then(function(currentToken) {
    if (currentToken) {
      sendTokenToServer(currentToken);
      updateUIForPushEnabled(currentToken);
    } else {
      // Show permission request.
      console.log('No Instance ID token available. Request permission to generate one.');
      // Show permission UI.
      updateUIForPushPermissionRequired();
      setTokenSentToServer(false);
    }
  })
  .catch(function(err) {
    console.log('An error occurred while retrieving token. ', err);
    showToken('Error retrieving Instance ID token. ', err);
    setTokenSentToServer(false);
  });
}

トークン更新のモニタリング

新しいトークンが生成されるたびに onTokenRefresh コールバックが呼び出されるため、そのコンテキストで getToken を呼び出すと、利用可能な最新の登録トークンに確実にアクセスできます。

// Callback fired if Instance ID token is updated.
messaging.onTokenRefresh(function() {
  messaging.getToken()
  .then(function(refreshedToken) {
    console.log('Token refreshed.');
    // Indicate that the new Instance ID token has not yet been sent to the
    // app server.
    setTokenSentToServer(false);
    // Send Instance ID token to app server.
    sendTokenToServer(refreshedToken);
    // ...
  })
  .catch(function(err) {
    console.log('Unable to retrieve refreshed token ', err);
    showToken('Unable to retrieve refreshed token ', err);
  });
});

トークンを取得したら、それをアプリサーバーに送信して、適切な方法で保管します。インスタンス ID サーバー API を使用すると、サブスクリプションに関する情報を取得することができます。

次のステップ

設定手順の完了後、ウェブ用 FCM(JavaScript)に進むための方法をいくつか次に示します。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。