防止在后台推动消息



firebase-messaging-sw.js中是否有任何方法可以在我的网站(关闭或其他网站窗口处于活动状态)时防止推送消息?

我使用Google Firebase服务在网站上实现了Web-Push通知。firebase.google.com/docs/cloud-messaging/js/client

我对其进行了测试,一切都很好,但是当我的网站窗口不在焦点(背景中)或关闭时,如果我得到推动通知,它将在20秒后消失。

在我的https://hdlava.me/j/firebase_subscribe.js文件中我添加了

requireInteraction: true 

MEDAGING.ONMESSAGE中的标志,因此,如果我在打开网站时会得到推送,直到我单击它才会消失。

我尝试添加此

requireInteraction: true

在我的https://hdlava.me/firebase-messaging-sw.js中,在Messaging.SetBackgroundMessageHandler中,但它不起作用。均匀:

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

不起作用。看起来整个消息传递。setBackgroundMessageHandler不起作用。

// firebase-messaging-sw.js
importScripts('https://www.gstatic.com/firebasejs/4.8.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/4.8.1/firebase-messaging.js');
firebase.initializeApp({
    messagingSenderId: '593513494453'
});
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function(payload) {
  console.log('[firebase-messaging-sw.js] Received background message ', payload);
  // Customize notification here
  const notificationTitle = 'Background Message Title';
  const notificationOptions = {
    body: 'Background Message body.',
    icon: '/firebase-logo.png'
  };
  return self.registration.showNotification(notificationTitle,
      notificationOptions);
});

有人可以帮我弄清楚问题是什么?另外,如果我在firebase-messaging-sw.js

中使用

self.addEventListener("push",function(event)

self.addEventListener("push",function(event) {
  if (!(self.Notification && self.Notification.permission === 'granted')) {
    return;
  }

  var data = {};
  if (event.data) {
    data = event.data.json();
  }
    console.log(data.notification);
  const notificationTitle = data.notification.title;
  const notificationOptions = {
    body: data.notification.body,
    icon: data.notification.icon,
        click_action: data.notification.click_action,
        requireInteraction: true
  };
  return self.registration.showNotification(notificationTitle,
      notificationOptions);
});

messaging.setBackgroundMessageHandler,所以我一次有两个消息。第一条消息消失了,第二个消息不会,但是第二个消息不可点击。是否有可能阻止第一消息并使第二个消息可单击?

使用Firebase Cloud Messaging的主要目的之一是在应用不活动的情况下接收消息。

当应用不活动时,无法防止收到消息。但是您可以:

  1. 在应用程序处于活动状态时仅对消息中的消息进行操作,即应用程序不活动时忽略消息。
  2. 当应用程序处于活动状态时,从服务器发送消息。这要求服务器以某种方式知道该应用程序是否处于活动状态,因此您需要将这些信息从客户端传达到服务器。

相关内容

  • 没有找到相关文章

最新更新