2016-09-28 51 views
0

我正在使用Firebase通知。爲了測試,我從Firebase控制檯發送通知。但在我的MainActivity中,我無法獲取我在控制檯中設置的數據。無法從Intent提取數據 - Firebase推送通知

方法onMessageReceived(RemoteMessage msg) in MyFirebaseService沒有被調用(如果該方法沒有被調用 - 數據傳輸到MainActivityIntent)。但我在Intent中看不到這些數據。

例如: enter image description here 而在調試: enter image description here

+1

對不起。我有點困惑。不應該使用[RemoteMessage.getData()](https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/RemoteMessage.html#getData())來獲取數據載荷?此外,請將代碼作爲文本而不是圖像發佈。包括你的'onMessageReceived()'。 –

+0

@AL。 - 是的 - 它可能只有當方法onMessageReceived()調用 – Artem

+1

我認爲onMessageReceived()將不會被調用,如果應用程序在後臺。你有沒有在前臺檢查應用程序? –

回答

0

如果您使用控制檯發送通知,它不被視爲有效載荷,因此,如果應用程序在後臺運行,方法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){ 
    }