2017-02-04 13 views
1

Я использую новый метод admin.messaging().sendToDevice() для отправки уведомлений Web Push. Я отправляю оба notification и data, поэтому я могу показать пользователям контекст в сообщении.Firebase messaging `setBackgroundMessageHandler` переопределяет тело уведомления #AskFirebase

На стороне клиента я использую firebase.messaging().setBackgroundMessageHandler() для обработки получаемых сообщений.

Проблема в том, что setBackgroundMessageHandler() никогда не вызывается. Я попробовал решение от a similar question, но если я изменить структуру полезной нагрузки на сервер, чтобы добавить notification в data поле генерируется ошибка говорят, что я должен использовать только строки в качестве значений в datanotification является объектом см. admin.messaging.NotificationMessagePayload).

Если я не использую firebase.messaging на сервере и просто перестраивать как другой ответ предложил, я не буду в состоянии наслаждаться прекрасной особенностью clickAction которая спасает меня обработками notificationclick себя.

Я также добавил слушателя к push события на работника службы, и я получаю полную полезную нагрузку (как notification и data доступны), он просто не вызывает обратный вызов

Является ли это ошибка с firebase.messaging.setBackgroundMessageHandler()? Или я не использую его, как я должен?

+0

Не вставляйте ключ '' уведомление ''в ключ' 'данных' '. Они оба должны быть клавишами верхнего уровня, и оба они являются необязательными. Итак, попробуйте что-то вроде 'sendToDevice (registrationToken, {notification: {title: 'Title'}})'. – jwngr

ответ

1

Я связался с поддержкой Firebase, и они сказали, что это ожидаемое поведение.

Так что если кто-то хочет что-то сделать, когда произойдет push, он должен только отправить поле data. Если отправлено поле notification, оно будет иметь приоритет, и обратный вызов не будет вызываться, но пользователь получит уведомление.