web-dev-qa-db-ja.com

FCM:通知をクリックできません

最近リリースされた FCMメッセージング Chromeでのプッシュ通知のサポートを使用しています。アプリがバックグラウンドにある場合、通知は表示されますが、通知をクリックしても何も起こりません。ユーザーが通知をクリックしたときに開くURLを指定するにはどうすればよいですか? (notificationclickイベントを使用した純粋なService Workerの概念を使用してそれがどのように行われるかを理解しています。 FCMメッセージング を使用してそれを行う方法を知りたいです。)

messaging.setBackgroundMessageHandler(function(payload) {
  var data = payload || {};
  var shinyData = decoder.run(data);

  console.log('[firebase-messaging-sw.js] Received background message ', shinyData);

  return self.registration.showNotification(shinyData.title, {
    body: shinyData.body,
    icon: shinyData.icon
  })
});

ここで何が欠けていますか?

9
Vibgy

click_actionは、 showNotification 関数の可能なパラメーターの1つではありません。

通知のクリックを処理するには、 notificationclick イベントハンドラーを定義します。

例えば:

self.addEventListener('notificationclick', function(event) {
  event.notification.close();
  event.waitUntil(self.clients.openWindow(YOUR_URL_HERE));
});
10
Marco

マルコの答えは正しいです。

Firebase Messaging Libraryは、Web PushAPIのラッパーです。

notification: { click_action: 'https://...' }ペイロードは通知を表示し、クリックを処理します。データペイロードで同じことを実現するには、notificationclickイベントリスナーを実装する必要があります(Marcoが提案したように)。

self.addEventListener('notificationclick', function(event) {
  event.notification.close();

  ... Do your stuff here.
});

notificationcloseイベントでも同じことができます。

self.addEventListener('notificationclose', function(event) {
  ... Do your stuff here.
});
8
Matt Gaunt