对于这个问题,我已经进行了很多搜索,但是我坚持了一周。 我有一个Ionic PWA项目,可以从firebase接收一些通知,我可以毫无问题地接收通知,并且可以在前台(应用程序处于打开状态)获取有效负载,但是当应用程序关闭时却无法获取有效负载,但是我没有弄清楚发生了什么事,所以我来这里请主人帮我。
messaging.setBackgroundMessageHandler(function(payload) {
var notificationTitle = 'Teste';
var notificationOptions = {
body: 'Background Message body.',
tag: 'campanhas',
data: payload.data,
icon: 'https://firebasestorage.googleapis.com/v0/b/hemotomobile-edeb9.appspot.com/o/logo.png?alt=media&token=4a9fc487-b8cf-4d3c-875c-774454ff6f50'
};
return self.registration.showNotification(notificationTitle,
notificationOptions);
});
self.addEventListener('notificationclick', function(event) {
event.notification.close();
event.waitUntil(clients.matchAll({
type: "window"
}).then(function(clientList) {
for (var i = 0; i < clientList.length; i++) {
var client = clientList[i];
if (client.url == '/' && 'focus' in client)
return client.focus();
}
if (clients.openWindow)
return clients.openWindow('/');
}));
});
在通知的提供者上,我使用以下代码:
public receiveMessage() {
console.log('notification')
this.messaging.onMessage((payload) => {
console.log('payload',payload)
});
}
我在标签页上将此提供商称为:
ionViewDidLoad(){
this.notification.receiveMessage()
}
那么,当PWA关闭时,谁能帮助我获得有效载荷?
答案 0 :(得分:0)
您是否尝试过通过在service worker中初始化firebase并使用它,
self.addEventListener("notificationclick", (event) => {
//your code
});
importScripts("https://www.gstatic.com/firebasejs/4.7.0/firebase.js")
importScripts("https://www.gstatic.com/firebasejs/4.7.0/firebase-messaging.js")
// Initialize Firebase
firebase.initializeApp({
'messagingSenderId': 'your sender id'
});
const messaging = firebase.messaging();
messaging.setBackgroundMessageHandler(function(payload) {
//your code
});
this.messaging.onMessage((payload) => {
//your code
});
self.addEventListener('notificationclose', function (event) {
self.registration.getNotifications().then(function (notifications) {
notifications.forEach(function (notification) {
notification.close()
})
});
})
我已经尝试在服务工作者中使用以上代码,并且在关闭应用程序时显示通知,如果要在关闭浏览器时显示通知,请确保已启用 Continue在Chrome设置中关闭Google Chrome时运行后台应用 选项。