【问题标题】:Firebase message notification not working on iOSFirebase 消息通知在 iOS 上不起作用
【发布时间】:2018-02-26 04:24:59
【问题描述】:

我们正在使用 firebase 向 iOS 和 Android 设备发送通知。也尝试发送到本机 iOS 应用程序,但也没有用。通知在 Android 上运行良好,但无法到达 iOS 设备。 奇怪的是,firebase 的响应是成功的。同一个应用程序能够从cordova site获得通知

以下是 FCM 的请求和响应:

Request:{"data":{"title":"Test notification from server code","body":"detailContent : some test data"},"to":"foqwNQ2JATY:APA91bHZRz6L7z6q3zyItYBh0eNaMv25d0CPjzPfbT4tTRrxNrkdKYwQM2pqvB-Q7ry3AEwCs8IduuYVBz834muWXnwjvt5I7mbMPbpPCw17bbBqFG4hhNdqDIO0xRdDQir8P2hz66WE","priority":"high"}

Response:{"multicast_id":6317092041813746870,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1519618961399427%7c1174a8f9fd7ecd"}]}

【问题讨论】:

  • 尝试在消息中添加"content_available" : true。请参阅此相关问题:stackoverflow.com/q/40004311/4815718
  • 试过了,也不行。我将 JSON 从github.com/fechanique/cordova-plugin-fcm 复制到我的 SOAPUI 项目并尝试发送通知。现在一切都很奇怪,那些为一些交易工作,然后在我开始删除可选字段时停止工作。现在,即使所有字段都完好无损,它也不起作用。而且我总能获得成功。
  • 成功响应仅表明服务器收到并接受了您的请求并且令牌有效。这并不表示消息已发送到设备。

标签: ios cordova firebase firebase-cloud-messaging


【解决方案1】:

你的有效载荷必须是这样的:

{
"to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
"notification" : {
  "body" : "great match!",
  "title" : "Portugal vs. Denmark",
  "icon" : "myicon"
},
"data" : {
  "Nick" : "Mario",
  "Room" : "PortugalVSDenmark"
}}

即使 Firebase 由于转发的 APNS 有效负载不正确而返回成功请求,在数据下拥有所有数据也不会触发 iOS 中的任何通知。 此外,正确的方法应该是遵循 GCM 或 FCM 有效负载建议,即使用通知消息的通知和自定义键/值对的数据。

当 FCM 向 APNS 发送数据时,它会将其转换为 APNs 有效负载。它在aps标签中设置通知值,即

{
"aps" : {
    "alert" : {
        "title" : "Portugal vs. Denmark",
        "body" : "Portugal vs. Denmark",
    }
},
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"   }

更多信息请参考this。

【讨论】:

  • 好吧,看起来不错,我刚刚通过添加通知对象让我的测试代码正常工作。但是,根据 Firebase 文档 firebase.google.com/docs/cloud-messaging/http-server-ref 通知对象是可选的,如果存在,通知将通过 APNs 发送。否则通过 FCM 连接服务器。如果 Notification 对象不存在,不应该使用 FCM 连接服务器吗?
  • 要发送通知,您需要发送aps 和alert 标签,因为这用于在通知中心显示数据。这里title 是可选的。
  • 现在知道了。所以这实际上是一个FCM问题,当它声称是一个中介时,它应该在格式转换方面无缝支持Android和iOS。在 Android 中,它是数据对象,而在 iOS 中,它是 Notification 对象。感谢您的投入,这真的很有帮助
  • 您知道如何查看从 FCM 发送到 APN 的数据,例如您发布的 JSON。我需要让我的 iOS 人员检查一下,因为在添加“通知”对象后,它开始适用于原生 iOS 应用程序。 Hybrid 仍然没有显示通知,但我很确定它到达了设备,因为它到达了本机应用程序,没有理由不应该到达混合应用程序。
  • 我不确定 JSON,但您可以在通知中查看 userInfo。它显示了接收到的 JSON 的完整字典对象。
猜你喜欢
  • 2018-05-20
  • 2021-01-24
  • 1970-01-01
  • 2017-06-16
  • 2020-01-31
  • 2018-03-02
  • 2020-08-14
  • 1970-01-01
  • 2019-07-05
相关资源
最近更新 更多