[英]FCM onMessageReceived does not fire when app is killed (Android Oreo)
[英]Firebase onMessageReceived not called when app is Killed
關於Firebase雲消息傳遞的趨勢主題是,對於某些低端設備,不會從onMessageReceived()
方法觸發Data Payload消息。 這是真的。 結果如下:
應用程序被殺死場景:
設備獲得數據負載:
設備無法獲得數據負載:
確保我不從服務器/郵遞員發送通知密鑰。
我正在尋找解決方案,我從Firebase獲得了數據負載,包括所有類型的設備,操作系統以及顯然來自API級別15.我的郵遞員詳細信息如下。
{
"registration_ids": ["fC5uxGSRCsg:APA91bHh9fMXQ41LpX6tjjSsBKGrKTWYpzKimLDzvBGSHDPo2pq87JHqogUp2kqrmJi06siG_p6DfgRCim23iFzlBQAIrgtMDqRW4s39zUqv9CzyPqzxVl5PtnHPRDs4OagTuTePNyDI"],
"data": {
"title" : "my_custom_value",
"message" : "tekksdasdasdsa",
"isBackground" : "",
"payload" : {
},
"timestamp" : "",
"imageUrl" : "",
}
}
在某些類似MI的設備中,如果從應用程序托盤中 刪除 應用程序,您將無法收到通知! 但如果您殺死了某項活動並且未從應用程序托盤中 刪除 ,您將收到通知!
在小米手機中,他們根據特定標准將應用列入白名單或將其列入黑名單。 如果您下載的是應用程序,並且該應用程序位於白名單中,則會允許該應用顯示通知。
如何測試 : -
在殺死您的應用活動之后嘗試測試您的應用,而不是從應用托盤中刪除,如果工作正常,那就是您可以在最后完成的任務!
根據Firebase文檔:
您有兩種方法可以為下游消息分配傳遞優先級:正常和高優先級。 正常和高優先級消息的傳遞如下所示:
正常優先。 這是數據消息的默認優先級。
高度優先。 這是通知消息的默認優先級。
由於您使用的是數據有效負載,因此默認情況下通知優先級設置為正常。 回到文檔:
為大多數消息類型提供
onMessageReceived
,但以下情況除外:通知消息:當您的應用在后台時提供。 在這種情況下,通知將傳遞到設備的系統托盤。 用戶點按通知會默認打開應用啟動器。
數據消息:在Android平台上,數據消息可以在后台和前台工作。 數據消息將由
onMessageReceived()
處理。 這里的平台特定說明如下:在Android上,可以在用於啟動活動的Intent中檢索數據有效負載。包含通知和數據有效負載的消息:背景和前景。 在這種情況下,通知將傳遞到設備的系統托盤,並且數據有效負載將在啟動器活動的附加內容中傳遞。
我懷疑它與使用數據有效負載有關。 由於應用程序因某些設備中的ram管理而被殺死,因此可能會跳過onMessageReceived()
。 一個簡單的解決方法是使用數據和通知有效負載。 因此,即使應用程序不再運行,您仍會在系統托盤中收到通知。 稍后在通知托盤中單擊后處理通知。
{
"data": {
"message": "message_body",
"title": "message_title"
},
"notification": {
"body": "message_body",
"title": "message_title"
}
}
查看官方文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.