当我的网站在后台(关闭或其他网站窗口处于活动状态)时,firebase-messaging-sw.js中是否有任何方法可以阻止推送消息?
我使用Google Firebase服务在我的网站上实施了网络推送通知。 firebase.google.com/docs/cloud-messaging/js/client
我测试了它,一切正常,但是当我的网站窗口不在焦点(它在后台)或关闭时,如果我得到推送通知,它将在20秒后消失。
在我的https://hdlava.me/j/firebase_subscribe.js文件中,我添加了
requireInteraction: true
message.onMessage中的标志,所以当我的网站打开时,如果我得到推送消息,那么在我点击它之前消息不会消失。
我尝试添加此
requireInteraction: true
我在https://hdlava.me/firebase-messaging-sw.js中的messaging.setBackgroundMessageHandler中的,但它无效。甚至:
console.log('[firebase-messaging-sw.js] Received background message ', payload)
不起作用。它看起来像整个messaging.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
所以我一次有两个混乱。第一条消息消失,第二条消息消失,但第二条消息不可点击。是否可以阻止第一条消息并使第二条消息可以点击?
答案 0 :(得分:0)
使用Firebase Cloud Messaging的主要目的之一是在应用未处于活动状态时接收消息。
当应用未处于活动状态时,无法阻止接收消息。但你可以: