来自服务人员单击和图标的 FCM 消息 Chrome 推送通知不起作用

Posted

技术标签:

【中文标题】来自服务人员单击和图标的 FCM 消息 Chrome 推送通知不起作用【英文标题】:FCM Messaging Chrome push notifications from service worker click and icon won't work 【发布时间】:2017-01-18 13:10:48 【问题描述】:

这段代码显示我的通知,一切都很好,但在通知弹出窗口中我看不到任何图标,单击通知只是关闭它而不是打开窗口。我从这里得到的这段代码 (Google's tutorial)。

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

firebase.initializeApp(
    'messagingSenderId': 'my id'
);

const messaging = firebase.messaging();

messaging.setBackgroundMessageHandler(function(payload) 
    var title = '';
    var body = '';

    if(payload && payload.notification) 
        if(payload.notification.body) 
            body = payload.notification.body;

            if(payload.notification.title) 
                title = payload.notification.title;
            
        
    

    return self.registration.showNotification(title, 
        body: body,
        icon: '/img/logos/logo-short-blue.png'
    );
);

self.addEventListener('notificationclick', function(event) 
    event.notification.close();

    var appUrl = '/' + event.notification.data.actionUrl;

    event.waitUntil(clients.matchAll(
            includeUncontrolled: true,
            type: 'window'
        ).then( activeClients => 
            if (activeClients.length > 0) 
                activeClients[0].navigate(appUrl);
                activeClients[0].focus();
             else 
                clients.openWindow(appUrl);
            
        )
    );
);

【问题讨论】:

【参考方案1】:

您必须在服务器端使用click_action 作为url 和icon 字段,同时形成推送消息的有效负载。

【讨论】:

【参考方案2】:

来自谷歌的指南:

点击操作仅支持安全的 HTTPS URL。

【讨论】:

以上是关于来自服务人员单击和图标的 FCM 消息 Chrome 推送通知不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如果设备收到来自 fcm 的推送通知,如何向处于终止状态的 android 应用程序显示/通信/广播消息

如何使用 FCM(Firebase 云消息传递)制作紧凑通知?

Cordova Android 应用程序不接收来自服务器端的 FCM 通知

Flutter 和 FCM(Firebase 云消息传递)onMessage、onResume 和 onLaunch 在单击通知时未触发(包:firebase_messaging 7.0.0)

FCM android客户端随机停止接收数据消息

在 iOS 9.2 上无法接收 FCM 主题消息