GCM工作正常,但现在fcm没有收到任何通知,如果它是由服务器发送它只有工作如果从firebase控制台发送我几乎可以确定问题是在我在应用程序中的数组形式:
String messageBody = remoteMessage.getNotification().getBody();
并在php中:
$fields = array(
'registration_ids' => $this->devices,
'data' => array( "message" => $message ),
);
你觉得怎么样?
答案 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控制台发送的通知仅为显示消息。