0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FirebaseCloudMessage 同一プロジェクトで複数アプリを登録し webプッシュした時にはまったこと

Posted at

1つのプロジェクトに複数アプリを登録できます。
マルチプラットフォームな場合のみに限らず、同じ構成のwebアプリが複数ある場合など。

今回はドメインの違う複数アプリを登録し、webプッシュしようとしました。

普通は別ドメインの複数webアプリ登録ってしないんだろうか。でも30個しかプロジェクト作れないし。

コンソールに表示されたエラー

後からかこうとするとどうやって解決したか忘れてるのでうろ覚え…

An error occurred while retrieving token. DOMException: Failed to execute 'subscribe' on 'PushManager': Subscription failed - no active Service Worker

firebase-messaging-sw.jsの存在と中身を確認。firebase系importとfirebase.initializeApp(アプリ毎の設定)、messaging.setBackgroundMessageHandlerが必要になると思います。

Uncaught (in promise) DOMException: Registration failed - missing applicationServerKey, and manifest empty or missing

最初のアプリでmanifest.jsonのlinkタグ入れなくても動いた気がするけど気のせい…?とりあえずhtmlに<link rel="manifest" href="manifest.json">的なのを入れましょう。
またmanifest.jsonの中身は下記の感じで、固定数字っぽいです。(調べたらsenderid入れるみたいなのも見たけど、固定派が多かった。公式ページのどこに書いてあるか探せなかった…)

manifest.json
{
  "gcm_sender_id": "103953800507"
}

Registration failed - A subscription with a different applicationServerKey (or gcm_sender_id) already exists;

これがはまってしまいました。applicationServerKeyってなんなのか。何をkeyにしているのか。。

pushManager.subscribeの第二引数を入れて解決しました。

fcm.js
navigator.serviceWorker.ready
    .then((registration) => {
        return registration.pushManager.subscribe({userVisibleOnly: true, applicationServerKey: myVapidKey});
    })

myVapidKeyにはアプリごとのウェブプッシュ証明書の公開鍵が入っています。
firebaseのウェブの構成→ウェブプッシュ証明書の鍵をアプリごとに作る。
アプリごとに公開鍵をvapidKeyとして使う。

これでとりあえずうごきました。合っているのかわからないけど…

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?