FCM控制台推送工作但服务器推送没有

时间:2016-06-03 10:09:09

标签: android firebase firebase-cloud-messaging

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

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

并在php中:

        $fields = array(
        'registration_ids'  => $this->devices,
        'data'              => array( "message" => $message ),
    );
你觉得怎么样?

1 个答案:

答案 0 :(得分:2)

在您的问题中,您发送的是数据消息,这是一封有效负载的消息: {"registration_ids" : ["token1"], "data" : { "key1" : "value1"}}

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

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

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

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

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