【发布时间】:2016-11-05 02:14:03
【问题描述】:
我正在使用 FCM(firebase 云消息传递)向 IOS 应用发送“自定义”数据通知。据我了解,当您希望 FCM 代表您的应用处理显示通知时,我们会使用通知消息。当您只想在您的应用程序中处理消息时,我们会使用数据消息。这是设计使然。
我面临的问题是 Device/InstandID 令牌对于已安装的应用程序是唯一的,而不是登录应用程序的用户。所以为了解决这个问题,我在数据中发送预期的用户标签,使其成为数据消息。由于应用程序处理数据通知,所以 didReceiveRemoteNotification() 回调仅在应用程序打开时触发,通知仅在发送时显示,而不是立即显示。
我的问题是,我是否可以发送自定义数据通知消息并使其在应用程序关闭时立即显示。
这是我发送给 FCM 的负载:
{
registeration_ids : [<id_1>, <id_2>],
data : {
title : message_title,
body : message_body,
intended_user : message_user
}
}
在android中FirebaseMessagingService.onMessageReceived()被调用,即使应用程序在后台,但在ios中didReceiveRemoteNotification()仅在应用程序启动时被调用,因此如果您发送数据消息,则不会出现后台消息。
【问题讨论】:
-
您是通过 API 还是通过 Firebase 控制台发送消息?来自 Firebase 控制台的所有消息都是通知消息,即使是带有自定义数据的消息。如果您从 API 发送,您是否可以包含您提出的请求,它将清除您正在尝试的内容。
-
我正在通过 API 发送消息。请查看有效负载数据问题的更新版本。
-
当您的应用程序在 iOS 上处于后台时,将不会收到 FCM 数据消息。这是因为当您的应用程序在后台时,您必须(应该)断开与 FCM 的连接。您应该尝试发送一条通知消息,该消息通过 APNs,该 APNs 也将在后台工作,并设置 content_available 字段,以便您的应用能够在后台处理回调。
标签: ios iphone firebase notifications firebase-cloud-messaging