【问题标题】:How to handle data type fcm notifications when app is not running or closed state in iOS similar to android?当应用程序在类似于 android 的 iOS 中未运行或关闭状态时如何处理数据类型 fcm 通知?
【发布时间】:2017-12-21 15:45:56
【问题描述】:

在android中,我们可以在应用未运行或关闭状态时接收数据类型的通知。并且可以使用代码解析和显示通知,并且可以执行任何操作,例如更新旧消息等。

public class FCMListenerService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.d("onMessageReceived for FCM", remoteMessage.getData().toString());
    }
}

我如何在 ios 中做类似的事情?

当应用程序处于后台或前台时,我能够获取数据类型的通知。所以我可以做任何我想做的事。但是当应用程序未运行时,我无法调试如何处理数据类型通知?有人可以帮我吗?

以下是我尝试发送的有效负载。

{
  "to": "..............",
  "data": {
    "body": "data",
    "title": "Portugal vs. Denmark",
    "icon": "myicon"
  },
  "content_available": true
}

【问题讨论】:

  • 如果我错了请纠正我,但这不是iOS不允许关闭/未运行的应用程序接收通知吗? AFAIK,这是它的默认行为。
  • @AL 那我们不能在iOS没有运行app的时候接收fcm数据消息吗?

标签: android ios swift3 apple-push-notifications firebase-cloud-messaging


【解决方案1】:

您不能将自定义标签放在 aps 标签内。以下是相关文档的说明:

提供者可以在 Apple 保留的范围之外指定自定义有效负载值 aps 命名空间。自定义值必须使用 JSON 结构化和 原始类型:字典(对象)、数组、字符串、数字和 布尔值。因此,在您的情况下,您应该执行以下操作:

{
    "aps" : {
        "alert" : {
            "title" : "Game Request",
            "body" : "Bob wants to play poker",
            "action-loc-key" : "PLAY"
        },
        "badge" : 5
    },
    "acme1" : "bar",
    "acme2" : [ "bang",  "whiz" ]
}

因此,您可以通过在主 JSON 中而不是在“aps”中查找自定义有效负载来读取它:

更多信息:

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html

【讨论】:

  • 感谢您的回答,但我猜这里是 FCM 在内部完成的。有没有办法通过 APN 向设备发送一些对象,解析它并在应用未运行时使用自定义逻辑显示通知
猜你喜欢
  • 2018-12-01
  • 2019-02-19
  • 2018-09-07
  • 2021-09-06
  • 2017-07-17
  • 2019-02-02
  • 1970-01-01
  • 2018-07-31
  • 2019-02-09
相关资源
最近更新 更多