Браузер: Google Cloud Messaging/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) { ... }
Код клиента (в работающем сервисном центре):
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',
}));
});
(Все скопировано с readmes, учебников и демонстраций)
Когда я отправляю уведомление на сервер, оно отображается на моем экране, как и ожидалось, без ошибок. Тем не менее console.log('Push message', event);
выводит объект события с data: null
, Как я могу получить test: 'value'
пара ключ-значение с сервера? Это с последним node-gcm и Chrome 52.
1 ответ
Решение
Полезная нагрузка для веб-push-уведомлений не работает так же, как для Android. Он должен быть зашифрован и отправлен другим способом.
Вы можете использовать библиотеку web-push для Node.js. Он поддерживает GCM для более старых версий Chrome, Web Push для Firefox и более новых версий Chrome.