簡體   English   中英

為什么 Android 不退出打盹模式,盡管 FCM 中消息的優先級很高?

[英]Why Android does not exit DOZE mode, despite the high priority of the message in FCM?

我正在通過 FCM 以高優先級發送數據消息。

curl -X POST -H "Authorization: Bearer ya29.c.b0AXv..." -H "Content-Type: application/json" -d '{
  "message": {
    "topic" : "mytopic",
    "data": {
      "message": "my_unique_data"
    },
    "android":{
      "priority":"high"
    },

  }
}' https://fcm.googleapis.com/v1/projects/myproject/messages:send

收到后 - 我打電話通知。 如果 Android 處於活動狀態,則此方法有效。

但是,如果智能手機的屏幕關閉,並且智能手機靜止了一段時間,然后我再次發送數據消息,則通知不會出現,直到我稍微移動手機。

我猜 Android 處於打盹模式,但文檔指出高優先級消息 FCM 使智能手機退出此模式。

請幫忙解決問題。

發生這種情況有兩個原因(從這里):

  1. 每個應用程序都有高優先級通知配額,如果您發送的通知數量過多,操作系統將取消它們的優先級
  2. Google 要求用戶與高優先級 FCM 消息進行某種交互(以防止開發人員濫用)。 因此,如果您發送“隱藏”的 FCM 通知,例如,顯示在靜默通知通道中,您的應用程序的配額將被取消優先級。 此外,用戶需要打開應用程序,或者在某個時間間隔內單擊通知(我沒有看到記錄的實際時間范圍)。 如果他們不這樣做,它也會被取消優先級。
  3. 項目清單

因此,聽起來您的應用的 FCM 配額已被取消優先級,您需要確定適用哪種情況

一般來說,您是正確的,如下所述:

FCM 已針對 Doze 和 App Standby 空閑模式進行了優化。 FCM 高優先級消息讓您能夠可靠地喚醒您的應用以吸引用戶。 在 Doze 或 App Standby 模式下,系統傳遞消息並讓應用程序臨時訪問網絡服務和部分喚醒鎖,然后將設備或應用程序返回到空閑 state。 對於時間敏感、用戶可見的通知,請考慮使用高優先級消息以在打盹模式下啟用傳遞。 高優先級消息預計會導致通知。 有關詳細信息,請參閱 FCM 關於高優先級消息的指南。

然而,他們也提到:

幾乎所有應用程序都應該能夠通過正確管理網絡連接、警報、作業和同步以及使用 FCM 消息來支持打盹。 對於一組狹窄的用例,這可能還不夠。 對於這種情況,系統提供了一個可配置的應用程序列表,這些應用程序部分地免於打盹和應用程序待機優化。 部分豁免的應用程序可以在打盹和應用程序待機期間使用網絡並保持部分喚醒鎖定。 但是,其他限制仍然適用於該應用程序,就像它們對其他應用程序一樣。 例如,應用程序的作業和同步被延遲(在 API 級別 23 及以下),並且其常規 AlarmManager 警報不會觸發。 應用程序可以通過調用 isIgnoringBatteryOptimizations() 來檢查它當前是否在豁免列表中。

有時,OEM 也會更改打盹模式的行為,從而創建與 Google 文檔中所述的功能略有不同的功能。 所以我建議按照他們在文檔中的提示:

用戶可以在設置 > 電池 > 電池優化中手動配置豁免應用列表。 或者,系統為應用程序提供請求用戶豁免它們的方法:大多數應用程序應調用包含 ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS 的意圖。 滿足可接受用例的應用程序可以改為調用包含 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 意圖操作的意圖,讓用戶直接將應用程序添加到豁免列表,而無需進入系統設置。 注意:Google Play 政策禁止應用請求直接免除 Android 6.0+(打盹和應用待機)中的電源管理功能,除非應用的核心 function 受到不利影響。 應用程序可以通過調用 isIgnoringBatteryOptimizations() 來檢查它當前是否在豁免列表中。

我相信這應該可以解決您的問題

文檔 - https://developer.android.com/training/monitoring-device-state/doze-standby

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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