浏览器:Google Cloud Messaging/node-gcm - 数据始终为空

Browser: Google Cloud Messaging/node-gcm - data is always null

服务器端代码:

var message = new gcm.Message({
    collapseKey: "demo",
    delayWhileIdle: true,
    timeToLive: 3,
    data: {
        test: 'value'
    }
});

var sender = new gcm.Sender(config.gcmKey);

var tokens = [];

... (to add tokens) ... 

sender.send(message, tokens, 3, function (err, res) { ... }

客户端代码(在工作的 serviceworker 中):

self.addEventListener('push', function(event) {
    console.log('Push message', event);
    var title = 'Push message';
    event.waitUntil(
        self.registration.showNotification(title, {
            body: 'Test',
            icon: 'img/icon.png',
        }));
});

(所有内容均来自自述文件、教程和演示)

当我发送通知服务器端时,它按预期显示在我的屏幕上并且没有错误。但是,console.log('Push message', event); 输出带有 data: null 的事件对象。如何从服务器获取 test: 'value' 键值对?这是最新的 node-gcm 和 Chrome 52.

Web 推送通知的有效负载与 Android 的工作方式不同。需要加密并以不同的方式发送。

您可以将 web-push library 用于 Node.js。它支持旧 Chrome 版本的 GCM,Firefox 和更新的 Chrome 版本的 Web Push。