GCM 工作正常,但现在 fcm 不会收到任何通知,如果它是由服务器发送的它只有在从 firebase 控制台发送时才有效我几乎可以肯定问题出在我在应用程序中的数组形式中:
String messageBody = remoteMessage.getNotification().getBody();
在 php 中:
$fields = array(
'registration_ids' => $this->devices,
'data' => array( "message" => $message ),
);
请问你怎么看
最佳答案
在您的问题中,您正在发送一条数据消息,这是一 strip 有如下有效负载的消息:
{"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"}}
。
如果应用程序在前台,它可以像数据消息一样访问这些值。
如果应用程序在后台,则需要等到用户单击通知并启动 Activity 。
此时您可以通过以下方式访问数据:getIntent().getExtras()
PS:通过 Firebase Web 控制台发送的通知只是显示消息。
关于android - FCM 控制台推送有效,但服务器推送无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37611534/