如果您使用控制檯發送通知,它不被視爲有效載荷,因此,如果應用程序在後臺運行,方法onMessageReceived()不叫。但是,如果應用程序在前臺運行,它確實如此。
這是一個curl命令,通過curl發送一個通知作爲負載,你必須使用一個shell來使用它。
curl -X POST --header "Authorization: key=<APIKEY>" --Header "Content-Type:
application/json" https://fcm.googleapis.com/fcm/send -d '{"to":"<YourToken>","data":{"type":"notification","message":"Hello, it works"}}'
**注意:刪除<>。
您的onMessageReceived()方法看起來像這樣獲取數據。
@Override
public void onMessageReceived(final RemoteMessage remoteMessage) {
try {
String remote_type = remoteMessage.getData().get("type");
if (remote_type.equals("notification")){
String message = remoteMessage.getData().get("message");
Log.d("ReceivedData", message);
}
}catch(NullPointerException e){
}
對不起。我有點困惑。不應該使用[RemoteMessage.getData()](https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/RemoteMessage.html#getData())來獲取數據載荷?此外,請將代碼作爲文本而不是圖像發佈。包括你的'onMessageReceived()'。 –
@AL。 - 是的 - 它可能只有當方法onMessageReceived()調用 – Artem
我認爲onMessageReceived()將不會被調用,如果應用程序在後臺。你有沒有在前臺檢查應用程序? –