簡體   English   中英

當應用被殺時,不會調用Firebase onMessageReceived

[英]Firebase onMessageReceived not called when app is Killed

關於Firebase雲消息傳遞的趨勢主題是,對於某些低端設備,不會從onMessageReceived()方法觸發Data Payload消息。 這是真的。 結果如下:

應用程序被殺死場景:

設備獲得數據負載:

  1. Nexus 5X:OS 7.1

設備無法獲得數據負載:

  1. 小米MI 4C:OS 5.1
  2. 華為LUA-U22:OS 5.1

確保我不從服務器/郵遞員發送通知密鑰。

我正在尋找解決方案,我從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM