Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase消息服务工作人员单击处理程序不';行不通_Javascript_Firebase_Firebase Cloud Messaging_Service Worker_Web Push - Fatal编程技术网

Javascript Firebase消息服务工作人员单击处理程序不';行不通

Javascript Firebase消息服务工作人员单击处理程序不';行不通,javascript,firebase,firebase-cloud-messaging,service-worker,web-push,Javascript,Firebase,Firebase Cloud Messaging,Service Worker,Web Push,我正在使用FCM来处理推送通知,但通知是以数据键而不是通知键发出的 下面是我用来处理新消息并显示为通知的代码。 我看到通知中包含我指定的所有选项和数据。但是,当我单击通知时,它不会触发任何“notificationclick”事件。它也不会打印事件通知 importScripts('https://www.gstatic.com/firebasejs/5.3.1/firebase-app.js'); importScripts('https://www.gstatic.com/firebasej

我正在使用FCM来处理推送通知,但通知是以
数据
键而不是
通知
键发出的

下面是我用来处理新消息并显示为通知的代码。 我看到通知中包含我指定的所有选项和数据。但是,当我单击通知时,它不会触发任何“notificationclick”事件。它也不会打印
事件通知

importScripts('https://www.gstatic.com/firebasejs/5.3.1/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/5.3.1/firebase-messaging.js');


firebase.initializeApp({
    messagingSenderId: "SOME_ID",
});

const messaging = firebase.messaging();


messaging.setBackgroundMessageHandler(payload => {
    console.log(payload);
    const options = {
        body: payload.data.body,
        icon: payload.data.icon,
        click_action: payload.data.click_action,
        link: payload.data.link,
        data: {
            time: new Date(Date.now()).toString(),
            click_action: payload.data.click_action,
        },
    };

    self.registration.showNotification(payload.data.title, options);

});



self.addEventListener("notificationclick", function(event) {
    console.log(event.notification);
    const clickedNotification = event.notification;
    clickedNotification.close();

    const urlToOpen = clickedNotification.data && clickedNotification.data.click_action;

    const promiseChain =  clients.matchAll({
        type: 'window',
        includeUncontrolled: true,
    })
        .then((windowClients) => {
            let matchingClient = null;

            for (let i = 0; i < windowClients.length; i++) {
                const windowClient = windowClients[i];
                if (windowClient.url === urlToOpen) {
                    matchingClient = windowClient;
                    break;
                }
            }

            if (matchingClient) {
                return matchingClient.focus();
            } else {
                return clients.openWindow(urlToOpen);
            }
        });

    event.waitUntil(promiseChain);

});
importScripts('https://www.gstatic.com/firebasejs/5.3.1/firebase-app.js');
进口文件('https://www.gstatic.com/firebasejs/5.3.1/firebase-messaging.js');
firebase.initializeApp({
messagingSenderId:“某个ID”,
});
const messaging=firebase.messaging();
messageing.setBackgroundMessageHandler(有效负载=>{
控制台日志(有效载荷);
常量选项={
body:payload.data.body,
图标:payload.data.icon,
单击操作:payload.data.click操作,
链接:payload.data.link,
数据:{
时间:新日期(Date.now()).toString(),
单击操作:payload.data.click操作,
},
};
self.registration.showNotification(payload.data.title,选项);
});
self.addEventListener(“notificationclick”,函数(事件){
console.log(事件通知);
const clickedNotification=event.notification;
单击通知。关闭();
const urlToOpen=clickedNotification.data&&clickedNotification.data.click\u操作;
const promiseChain=clients.matchAll({
键入:“窗口”,
includeUncontrolled:正确,
})
。然后((WindowClient)=>{
让matchingClient=null;
for(设i=0;i
1您可以使用应用程序中的firebase-messaging-sw.js文件检查构建后该文件中是否存在最近的更改

2我们只需要firebase-messaging-sw.js中最新的更改,因此需要检查和更新firebase-messaging-sw.js文件,并注销所有较旧的firebase-messaging-sw.js


这对我很有用。

您使用的是管理员firebase API还是传统API?console语句是否确认实际调用了setBackgroundMessageHandler?@nuruddin iminokhunov单击处理的解决方案是否成功?在同一个问题上挣扎,对我来说也是一样