Firebase iOS FCM仅数据消息不调用消息:didReceiveMessage

Firebase iOS FCM仅数据消息不调用消息:didReceiveMessage,firebase,firebase-cloud-messaging,Firebase,Firebase Cloud Messaging,Firebase消息传递版本5.6.0。我正在尝试通过iOS 9.0上的Firebase消息传递(如果需要,可以使用10个),但它没有按照文档调用firmMessageDelegate的消息传递:didReceiveMessage。我在@code>firmMessage.m的appDidReceiveMessage:message中看到消息,但从未传递给学员 这是云函数的代码段,该函数通过以下方式向主题发送数据: 我错过什么了吗 更新:如果我实现application:didReceiveEmo

Firebase消息传递版本
5.6.0
。我正在尝试通过iOS 9.0上的Firebase消息传递(如果需要,可以使用10个),但它没有按照文档调用
firmMessageDelegate
消息传递:didReceiveMessage
。我在@code>firmMessage.m的
appDidReceiveMessage:message
中看到消息,但从未传递给学员

这是云函数的代码段,该函数通过以下方式向主题发送数据:

我错过什么了吗

更新:如果我实现application:didReceiveEmotentification:userInfo,我确实会收到数据
fetchCompletionHandler:completionHandler。

感谢Firebase支持部门的Kat,以下是答案

使用传统的
sendToTopic
而不是
send
,因为
send
会悄悄地添加
content\u available=1
,这会被视为APNs静默通知。以下是更新版本:

admin.messaging().sendToTopic('example', {
  data: {
    test: '123'
  }
});
// Always use strings for key/values in the data object.
下面是来自Firebase支持的Kat的逐字记录:

如何处理将取决于您的设置

  • 如果您有
    content\u available=1
    ,则该消息将通过APNs发送,并被视为类似的消息。当应用程序在前台或后台运行时(即未终止),这在
    应用程序:didReceiveMemotentification:
    回调中。有关更多信息,请参阅

  • 如果没有可用的内容,则通过FCM直接通道发送消息。当应用程序位于前台时,这仅在消息:didReceiveMessage:中处理

请注意,通过Admin SDK的send()方法发送的消息默认使用content_available=1,因此它们总是通过APN发送。如果要配置content_available字段,则需要使用Admin SDK的sendToDevice()方法,该方法使用

除此之外,这是一份清单

admin.messaging().sendToTopic('example', {
  data: {
    test: '123'
  }
});
// Always use strings for key/values in the data object.