【PWA】FCMのトークンをサービスワーカーの通知受信時の処理で取得する方法

FCMのプッシュ通知を受け取った際にサービスワーカーのプッシュイベントリスナ処理からトークンを取得する方法を紹介します。モニタリング用に情報を送る際などに利用できます。

方法1:プッシュ通知にトークンを格納する

プッシュ通知を送る際、中身にトークンを入れてしまえば、受信時の処理でそれを取り出し利用することができます。データメッセージを利用すれば、任意ののキーと値を利用できるため、トークンを入れる独自のキーを利用します。

但し、1人1人異なるメッセージを来ることになるため、全員に同一メッセージを送る際には不向きになります。

方法2:indexedDBからトークンを取得する

FCMのトークンはindexedDBに格納されているため、サービスワーカーのプッシュ受信処理からこれを参照すればトークンを取得できます。

以下のコードでindexedDBのトークンを取得できます。

// indexed dbからトークンを取得
let openRequest = indexedDB.open('firebase-messaging-database', 1);
openRequest.onsuccess = function () {
  let db = openRequest.result;
  var transaction = db.transaction(['firebase-messaging-store']);
  var objectStore = transaction.objectStore("firebase-messaging-store");
  var request = objectStore.get("1:xxx:web:xxx"); //APP IDを指定
  request.onsuccess = function (event) {
    console.log("token is " + request.result.token);
  };
};
カテゴリーPWA

コメントを残す

メールアドレスが公開されることはありません。