0

發現從Firebase控制檯發送通知後,如果應用程序在後臺,則不會調用onMessageReceived()方法。未從http請求調用Firebase onMessageReceived()

因此,我遵循人們的建議使用HTTP POST請求。 我已經使用郵遞員使POST請求

https://fcm.googleapis.com/fcm/send

用2頭:

內容類型:應用/ JSON

授權:鍵= ALSA ...... .6ryLiI

和身體

{ 
"to" : "fzgh-aHiOd8:APA91bFcKuwuVq_2gbLydHkAZf9XLUzm9vPalh7EUQT3Kyj8mcW9raAs9QvxbHaGJ4-U4RnUJwJ3UaEarbMXiQ8rHnsx9UuYBDrOI9tJYB78_Z3VVR1l7H_6PGpCkdgINx8a4vvMXD9q", 
"notification" : { 
    "body" : "Sales!", 
    "title" : "ID Phone", 
    "icon" : "myicon" 
}, 
"data" : { 
    "data" : "sales", 

} 

}

現在,通知確實進入我的應用程序(這很好),但它仍然不是我想要的自定義通知。即onMessageReceived()仍然沒有被調用。

有什麼我失蹤?

+0

檢查是否收到數據。因爲您的註冊人ID或服務器API密鑰可能不正確 – Killer

+0

正在接收數據。但仍然沒有工作。謝謝 – RJB

+0

當您發送通知消息並且您的應用程序位於後臺時,通知托盤中將顯示通知。你的應用程序的'onMessageReceived'不會被調用。這是預期的行爲。請參閱http://stackoverflow.com/questions/37711082/how-to-handle-notification-when-app-in-background-in-firebase –

回答

2

您應該定義一個數據有效載荷以在onmessagereceived()中獲取消息。通知標籤僅用於通知。

從GCM documentation看到這個:

數據消息與您的自定義鍵/值對

組數據到數據有效載荷發送到 客戶端應用程序。數據消息可以具有最大4KB的有效載荷。

例如,這裏是在同一IM 應用如上的JSON格式消息,所述信息被封裝在數據 和客戶端應用程序預期解釋內容:

{ 
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", 
    "data" : { 
    "Nick" : "Mario", 
    "body" : "great match!", 
    "Room" : "PortugalVSDenmark" 
    }, 
} 

編輯

替換這些

Content-Type - application/json 
Authorization - key=ALsa.......6ryLiI 

Content-Type:application/json 
Authorization:key=ALsa.......6ryLiI 
+0

我發現了另一個錯誤,並編輯了我的答案。 – uguboz

+0

謝謝,幫了我很多。標記爲已接受 – RJB