当app未运行或iOS中的关闭状态时,如何处理数据类型fcm通知类似于android?

San*_*ada 7 android apple-push-notifications ios swift3 firebase-cloud-messaging

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

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

我怎么能在ios中做类似的事情?

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

下面是我要发送的有效负载.

{
  "to": "..............",
  "data": {
    "body": "data",
    "title": "Portugal vs. Denmark",
    "icon": "myicon"
  },
  "content_available": true
}
Run Code Online (Sandbox Code Playgroud)

Vik*_*mar 0

不允许您将自定义标签放入 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" ]
}
Run Code Online (Sandbox Code Playgroud)

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

欲了解更多信息:

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