Web Push-уведомление Данные полезной нагрузки становятся нулевыми

Привет, я пытаюсь реализовать веб-push-уведомление для Интернета. Я следовал следующему примеру, кроме сервера часть, для которой я использую скрипт Python для подключения к gcm/fcm и создания полезной нагрузки. Я получаю push-событие, но event.data становится нулевым.

from datetime import datetime
from pyfcm import FCMNotification
pushService = FCMNotification(api_key ='xxx'}
registrationId=""
messageTitle = "New update available"
messageBody ="some message"
dryRun = False
extraData = {}
extraData['title'] = "nknkn"

sw.js

self.addEventListener('push',function(e){

console.log('Push Message Recevied',e.data);
var title = 'Push message';
e.waitUntil(
    self.registration.showNotification(title, {
        body: 'The Message form data',
        icon: 'icon.jpg',
        tag: 'my-tag'
    }));
});

person Anand Nagaraj    schedule 17.08.2016    source источник
comment
какую версию хрома вы используете?   -  person Vivek Pratap Singh    schedule 19.08.2016


Ответы (1)


И Google Chrome, и Mozilla Firefox в настоящее время поддерживают полезную нагрузку для push-сообщений, см. PushMessageData на MDN. Но в соответствии со спецификацией Push API любая полезная нагрузка ДОЛЖНА быть зашифрована, иначе браузер отбросит ее и вернет null (см. 11.1.6):

Если push-сообщение не может быть расшифровано по какой-либо причине или если оно не зашифровано и содержит какую-либо полезную нагрузку, отбросьте сообщение и завершите этот процесс. Push-сообщение может быть пустым, если оно не содержит содержимого, но в противном случае событие push не должно запускаться для push-сообщения, которое не было успешно расшифровано с помощью пары ключей, связанной с push-подпиской.

Вот хорошая статья от разработчиков Google, в которой это объясняется более подробно: Шифрование полезной нагрузки Web Push. И оригинальный проект Шифрование сообщений для Web Push.

Также могу предложить посмотреть набор уже реализованных библиотек для WebPush на разных языках: web-push-libs . Вы также можете найти там библиотеку, написанную на Python. И еще одна библиотека на Java, которая может отправлять push-сообщения с полезной нагрузкой в ​​Chrome и Firefox: https://github.com/MartijnDwars/web-push.

person Idel Pivnitskiy    schedule 19.08.2016
comment
Это также должно означать, что отправка массовых уведомлений невозможна... или, по крайней мере, очень непрактична... необходимость отправлять X http-запросов X-клиентам вместо отправки до 1000 за раз.... - person Spock; 17.10.2016