浏览器: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。
服务器端代码:
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。