如何避免在 Service Worker 推送事件中显示通知

问题描述 投票:0回答:2

我目前正在使用一个已经生成弹出消息的应用程序,因此我想使用 firebase 在后台监听推送通知,但我只想将一些数据传递给客户端,并避免显示来自服务人员的消息。我已经尝试了不同的方式,但它们都显示来自谷歌的自定义弹出窗口“该网站已在后台更新”。 现在我的代码按预期工作,但我不喜欢等待空承诺的想法。有更好的解决方案吗?使用这种方法有哪些风险。我没有找到关于 event.waitUntil() 的太多信息,例如,我不知道它等待了多少时间。欢迎任何帮助。 (我已经尝试过所有这些https://github.com/firebase/quickstart-js/issues/126

const messaging = firebase.messaging();
self.addEventListener('push', function(event) {
    if(event.data) {
        const listenerEvent = event.data.text();
        const response = JSON.parse(listenerEvent);
        var promiseChain = null;
        const bc = new BroadcastChannel('firebase_background_message_channel');
        bc.postMessage(response);
        event.waitUntil(promiseChain);
    }
});
javascript firebase service-worker
2个回答
0
投票

Chrome显示“此网站已在后台更新”。收到推送消息时的通知,并且在传递给

event.waitUntil()
的 Promise 完成后,Service Worker 中的推送事件不会显示通知。

Chrome 要求在收到推送消息时显示通知,以防止网站通过发送大量安静的推送消息来耗尽用户的电池。

处理推送事件中有更多相关信息。


0
投票

在您的代码中,

promiseChain
始终为空,这将导致出现模糊的 Chrome 消息。当调用
event.waitUntil()
时,你实际上必须传递一个 Promise。

© www.soinside.com 2019 - 2024. All rights reserved.