2017-02-16 12 views
0

我在Firebase文檔中看到,如果設備收到來自FCM的高優先級消息,並且網絡連接將嚮應用程序服務器打開,則設備將從睡眠中退出。我已經測試過這種行爲,我知道它確實喚醒了一個設備。設備在收到FCM高優先級消息時會保持清醒狀態多久?

我的用例是這樣的,我需要使用推送消息的數據標籤中的設置密鑰下載圖像。會有多個這樣的推送通知,我將把所有這些消息保存在一個數據庫中。

說了十分鐘後,通知將實際上觸發到用戶的屏幕上,以避免用戶在立即打開網絡連接時收到的大量其他通知。

我的問題本質上是:

  1. 將在設備清醒足夠長的時間來下載圖像並將其保存到數據庫(圖像尺寸爲最大100KB)?

  2. 或者我應該使用JobScheduler API推遲下載,以確保網絡連接?

回答

1

是的,你應該推遲下載,但這取決於你的應用程序的性質。文檔稱高優先級的消息會爲應用程序提供臨時訪問權限,因此不能保證您的圖像下載將在該窗口中實際完成。

您的應用程序消息是否對時間敏感(我的意思是如果用戶在10分鐘後看到它們,世界會崩潰)?如果沒有,那麼你應該完全按照你自己的建議。否則,您可能會啓動前臺服務,這可能會阻止該設備進入打盹模式(注意,您的應用可能會耗盡大量電量,最終這可能會給用戶造成負面印象)。

+0

這很好,如果它不完全是十,那更像是至少十。我擔心jobcheduler仍然是一樣的。假設設備處於打盹狀態,並且維護窗口到達,從而導致我的工作按計劃進行。現在我需要多長時間下載所有圖像?假設有五十張圖片,他們會在該窗口下載嗎?窗戶有多長時間? – Kushan

+0

不,他們絕對不會。如果有50張圖像,則需要多個維護窗口才能完成下載。但有利的是,用戶並未完全使用該設備或應用程序。那麼它有什麼關係 – Dibzmania

+0

雅不幸的是,它確實:(我負責人發送這些圖像哈哈,這對我來說是非常重要的,這些得到了交付和顯示。甚至必須使用jobinfo閒置爲假 – Kushan