Firebase消息`setBackgroundMessageHandler`覆盖通知正文#AskFirebase

Firebase消息`setBackgroundMessageHandler`覆盖通知正文#AskFirebase,firebase,web-push,firebase-admin,Firebase,Web Push,Firebase Admin,我正在使用新的admin.messaging().sendToDevice()方法发送Web推送通知。我同时发送通知和数据,以便在消息中向用户显示一些上下文 在客户端,我使用firebase.messaging().setBackgroundMessageHandler()来处理接收消息 问题是永远不会调用setBackgroundMessageHandler()。我尝试了来自的解决方案,但如果我更改服务器上的有效负载结构,在数据字段中添加通知,则会抛出一个错误,说明我应该只在数据中使用字符串作

我正在使用新的
admin.messaging().sendToDevice()
方法发送Web推送通知。我同时发送
通知
数据
,以便在消息中向用户显示一些上下文

在客户端,我使用
firebase.messaging().setBackgroundMessageHandler()
来处理接收消息

问题是永远不会调用
setBackgroundMessageHandler()
。我尝试了来自的解决方案,但如果我更改服务器上的有效负载结构,在
数据
字段中添加
通知
,则会抛出一个错误,说明我应该只在
数据
中使用字符串作为值(
通知
是一个对象。请参阅)

如果我不在服务器上使用
firebase.messaging
,而只是按照另一个答案建议进行重组,我将无法享受
clickAction
的精彩功能,这让我不用亲自处理
通知click

我还向service worker上的
push
事件添加了侦听器,并且我收到了完整的负载(通知
和数据
都可用),它只是不调用回调


这是firebase.messaging.setBackgroundMessageHandler()的一个bug吗?还是我没有按预期的方式使用它?

我联系了Firebase支持人员,他们说这是预期的行为

因此,如果一个人想在发生
推送时做某事,他应该只发送
数据
字段。如果发送了
通知
字段,则该字段将优先,并且不会调用回调,但用户将收到通知

不要将
“通知”
键嵌套在
“数据”
键内。它们都应该是顶级键,并且都是可选的。因此,尝试类似于
sendToDevice(registrationToken,{notification:{title:'title'}}})的方法