FCM 控制台推送有效,但服务器推送无效

FCM console push works but server push does not

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

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

并在 php 中:

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

请问您怎么看

在您的问题中,您发送的是 数据消息,这是一条有效载荷如下的消息: {"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 中,则需要等到用户单击通知并启动 activity.
届时您可以通过以下方式访问数据:getIntent().getExtras()

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