【问题标题】:Firebase messaging handle custom data in background on iOSFirebase 消息处理在 iOS 后台处理自定义数据
【发布时间】:2017-09-07 15:18:48
【问题描述】:

我将此发送到 Firebase:

{
    "to" : "/topics/12344",
    "priority" : "high",
    "data" : {
      "c" : "sometext",
      "t" : "someothertext"
    },
  }

在 Android 上,我可以使用“数据”负载创建自定义通知并访问其对象。我不必发送消息标题和正文,因为我创建了自定义文本。即使应用程序关闭,这也有效。

在 iOS 上,我可以使用以下方式访问自定义数据:

func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
    print("Received data message: \(remoteMessage.appData)")
}

但它只在应用程序打开时打印,而不是在关闭时打印。如果我将“通知数组”发送到 Firebase,它会在应用关闭时创建通知,但我无法访问自定义负载。

我的问题:如何在应用关闭时访问 iOS 上的自定义负载并创建通知?

【问题讨论】:

  • 嘿,没有解决方案?我也有同样的问题。
  • 有没有办法只使用数据负载在后台接收推送通知?

标签: ios firebase firebase-cloud-messaging firebase-notifications


【解决方案1】:

如果应用关闭或死亡,只能将通知传递给应用 https://firebase.google.com/docs/cloud-messaging/concept-options

在后台时,应用在通知托盘中接收通知负载,并且仅在用户点击通知时处理数据负载。

在前台时,您的应用会收到一个消息对象,其中包含两个可用的有效负载。

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

【讨论】:

  • 有没有办法只使用数据负载在后台接收推送通知?
  • @Andrea 你的意思是静默通知吗?
  • 是的,我想自己处理通知,我只需要数据有效负载,因为在 Android 中只添加数据时,它可以在后台和前台处理,我想要相同的行为在 iOS 中,有可能吗?
  • 很快,是的,这是可能的。您可以阅读此答案stackoverflow.com/a/37621274/3527461,然后阅读 FireBase 文档(答案中的链接)
猜你喜欢
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 2016-12-14
相关资源
最近更新 更多