javascript - 浏览器: Google Cloud Messaging/node-gcm - data is always null

标签 javascript google-cloud-messaging web-push node-gcm

服务器端代码:

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

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

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 的情况。

最佳答案

网络推送通知的有效负载的工作方式与 Android 的工作方式不同。需要对其进行加密并以不同的方式发送。

您可以使用web-push library对于 Node.js。它支持旧版 Chrome 的 GCM、Firefox 和新版 Chrome 的 Web Push。

关于javascript - 浏览器: Google Cloud Messaging/node-gcm - data is always null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38555355/

相关文章:

javascript - 如何在菲律宾风格 map 中隐藏标签?

javascript - 如何处理 jquery 数据表中的数据库空值

java - 通知取代了 Android 中的旧版本

ios - Firebase Cloud Messaging 是否支持 VOIP pushkit 服务?

javascript - 推送 WebAPI + IndexedDB + ServiceWorker

javascript - 测试使用具有单独模板的另一个组件的 ember 组件

带有 JSON 参数的 JavaScript fetch()

java - 解决java.lang.InknownClassChangeError : android. support.v4.content.ContextCompat

push-notification - 如何衡量从我的渐进式网络应用程序禁用推送通知的人数?