1

GCM 工作正常,但现在 fcm 不会收到任何通知,如果它是由服务器发送的,它仅在从 firebase 控制台发送时才有效我几乎可以肯定问题出在我在应用程序中的数组形式中:

        String messageBody = remoteMessage.getNotification().getBody();

在 php 中:

        $fields = array(
        'registration_ids'  => $this->devices,
        'data'              => array( "message" => $message ),
    );

请问你怎么看

4

1 回答 1

2

在您的问题中,您正在发送一条data-message,这是一条带有如下有效负载的消息: {"registration_ids" : ["token1"], "data" : { "key1" : "value1"}}

要接收data有效负载(在示例中:key1:value1),客户端应用程序应使用:

String value1 = remoteMessage.getData().get("key1");

FCM 还支持display-messages
示例: {"registration_ids" : ["token1"], "notification" : { "body" : "hello"}}
当应用程序处于后台时,这些消息会自动显示。onMessageReceived()只有当应用程序已经打开并在前台时,他们才会调用。在第二种情况下,您可以通过以下方式访问原始通知的字段:remoteMessage.getNotification().getBody()

显示消息还可以包括{"data" : { "key1" : "value1"}}.
如果应用程序在前台,它可以像数据消息一样访问这些值。
如果应用程序在 bakground 中,您需要等到用户单击通知并启动活动。
此时,您可以通过以下方式访问数据:getIntent().getExtras()

PS:通过 Firebase Web 控制台发送的通知只是显示消息。

于 2016-06-05T03:52:55.380 回答