0

服务器端代码:

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) { ... }

客户端代码(在工作的服务人员中):

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。

4

1 回答 1

1

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

您可以使用Node.js的web-push 库。它支持旧 Chrome 版本的 GCM、Firefox 的 Web 推送和较新的 Chrome 版本。

于 2016-07-24T20:43:24.910 回答