我正在Web应用程序中实现Firebase通知。网页处于非活动状态时,我无法接收后台通知。
到目前为止,我所做的是:
manifest.json
:
{ "gcm_sender_id": "103953800507" }
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': '11111'
});
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function (payload) {
//sometime receive notification in this
debugger;
//some code here to receive notification..
return self.registration.showNotification(title,
notificationOptions);
});
Home/Index
页中,放置以下代码以获取权限和令牌
firebase.initializeApp({
'messagingSenderId': '11111'
});
const messaging = firebase.messaging();
messaging.requestPermission().then(function() {
console.log('Notification permission granted.');
messaging.getToken().then(function(currentToken) {
if (currentToken) {
console.log(currentToken);
sendTokenToServer(currentToken); //save in database
}
}).catch(function(err) {
console.log('An error occurred while retrieving token. ', err);
});
}).catch(function(err) {
console.log('Unable to get permission to notify.', err);
});
messaging.onTokenRefresh(function() {
messaging.getToken().then(function(refreshedToken) {
sendTokenToServer(refreshedToken);
}).catch(function(err) {
});
});
messaging.onMessage(function (payload) {
//receive notification here when this page is active. working fine
});
如何在中接收通知 messages.setBackgroundMessageHandler?
答案 0 :(得分:0)
上面提到的代码是可以的。 app focus
有问题。
可以说我有p1,p2和p3页。
p1具有获取通知权限,获取令牌和接收前台通知的代码。 我原本希望在p2和p3页上有后台通知。
但是,只有这两个页面不在浏览器的当前焦点标签中,它们才会在messaging.setBackgroundMessageHandler
中收到通知。