Я использую новый метод admin.messaging().sendToDevice()
для отправки уведомлений Web Push. Я отправляю и notification
, и data
, чтобы показать пользователям некоторый контекст в сообщении.
На стороне клиента я использую firebase.messaging().setBackgroundMessageHandler()
для обработки полученных сообщений.
Проблема в том, что setBackgroundMessageHandler()
никогда не вызывается. Я попробовал решение из похожего вопроса, но если я изменю структуру полезной нагрузки на сервер добавляет notification
в поле data
, выдается ошибка, говорящая, что я должен использовать только строки в качестве значений в data
(notification
является объектом. см. admin.messaging.NotificationMessagePayload).
Если я не буду использовать firebase.messaging
на сервере и просто реструктурирую, как предложил другой ответ, я не смогу пользоваться замечательной функцией clickAction
, которая избавляет меня от работы с notificationclick
самостоятельно.
Я также добавил слушателя к событию push
в сервис-воркере, и я получаю полную полезную нагрузку (доступны как notification
, так и data
), он просто не вызывает обратный вызов
Это ошибка с firebase.messaging.setBackgroundMessageHandler()
? Или я не так его использую?
"notification"
внутрь ключа"data"
. Оба они должны быть ключами верхнего уровня и оба являются необязательными. Итак, попробуйте что-то вродеsendToDevice(registrationToken, { notification: { title: 'Title' } })
. - person jwngr   schedule 07.02.2017