gpt4 book ai didi

javascript - 在fcm的setBackgroundMessageHandler函数中获取文档

转载 作者:行者123 更新时间:2023-12-03 02:48:20 25 4
gpt4 key购买 nike

下面是我的 fcm setBackgroundMessageHandler 函数:

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'
};
var event = new CustomEvent("name-of-event", payload);

// Dispatch/Trigger/Fire the event
document.dispatchEvent(event);
return self.registration.showNotification(notificationTitle,
notificationOptions);
});

我无法在上述方法中访问文档。我尝试将文档保存在全局变量中并在上面的方法中访问它,但它不起作用。

var document = document;
.
.
.
document.dispatchEvent(event); // gives error: dispatchEvent of undefined

最佳答案

由于 document 在服务工作人员中无法访问。因此无法使用其 dispatchEvent 函数向主页面发出事件。

要将消息从服​​务工作人员发送到主页,我们可以使用BroadcastChannel。在主页中创建一个监听器,如下所示:

var listener = new BroadcastChannel('listener');
listener.onmessage = function(e) {
console.log('Got message from service worker',e);
};

service Worker js 文件中使用 BroadcastChannelpostMessage 函数将消息发送到主页:

var listener = new BroadcastChannel('listener');
listener.postMessage('It works !!');

关于javascript - 在fcm的setBackgroundMessageHandler函数中获取文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48004616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com