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

self.addEventListener('push', function(event) {
  var jsonObj = event.data.json();
}

Я написал push-уведомление для Chrome, но event.data всегда имеет значение null.

В настоящее время я использую библиотеку GCMPushMessage, думаю, мне нужен php curl для отправки уведомления. Может ли кто-нибудь помочь мне отправить веб-уведомление с полезной нагрузкой?


person rescue1155    schedule 23.10.2017    source источник


Ответы (1)


По состоянию на 2015 год в этом соответствующем сообщении SO говорится, что это предполагаемое поведение.

Недостатком текущей реализации Push API в Chrome является то, что вы не можете отправлять какие-либо данные с помощью push-сообщения. Нет, ничего. Причина этого в том, что в будущей реализации данные полезной нагрузки должны будут быть зашифрованы на вашем сервере, прежде чем они будут отправлены на конечную точку push-сообщений. Таким образом, конечная точка, каким бы ни был поставщик push-уведомлений, не сможет легко просмотреть содержимое push-сообщения. Это также защищает от других уязвимостей, таких как плохая проверка сертификатов HTTPS и атаки «человек посередине» между вашим сервером и поставщиком push-уведомлений. Однако это шифрование пока не поддерживается, поэтому тем временем вам потребуется выполнить выборку, чтобы получить информацию, необходимую для заполнения уведомления.

В соответствии с документом вы должны получить информацию, а затем заполнить ее в уведомлении.

В марте 2016 г. было выпущено обновление под названием: Шифрование полезной нагрузки веб-доставки

До Chrome 50 push-сообщения не могли содержать никаких полезных данных. Когда в вашем сервис-воркере срабатывает событие push, все, что вы знаете, это то, что сервер пытается вам что-то сказать, но не то, что это может быть. Затем вам нужно было сделать дополнительный запрос на сервер и получить детали уведомления для отображения, что может привести к сбою в плохих условиях сети.

Теперь в Chrome 50 (и в текущей версии Firefox для настольных ПК) вы можете отправлять произвольные данные вместе с push-уведомлением, чтобы клиент мог избежать дополнительного запроса. Однако с большой силой приходит и большая ответственность, поэтому все полезные данные должны быть зашифрованы.

Убедитесь, что вы выполнили реализацию, необходимую для применения полезных данных в веб-доставке для Chrome. Например, некоторые изменения на стороне клиента и изменения на стороне сервера.

Надеюсь это поможет.

person Mr.Rebot    schedule 24.10.2017
comment
Спасибо!! я настроил это с помощью метода fetch() с TTL: 3600, так что теперь он работает фантастически... - person rescue1155; 24.10.2017