2017-12-18 320 views
2

我正在測試Firebase推送通知,並從Firebase撰寫器面板發送通知,並且我注意到如果我從應用程序信息面板關閉應用程序進程, t到達設備。即使我再次啓動應用程序,通知也會丟失,並且永遠不會收到。如果應用程序關閉,則不會收到Firebase推送通知

我也tryed這一點:

關閉應用程序 - 在設備上>電源 - - >關閉設備>發送通知...並沒有收到通知!

看來,firebase只能收到通知,如果設備已啓動應用程序,並沒有100%關閉,我的意思是,關閉它只是後退鍵,但不殺死應用程序進程。

這怎麼可能?即使應用程序關閉,Firebase也會收到通知。

我正在測試Nexus 5X與Android 8.0和我使用的最後一個版本Firebase push Notifications

+1

有兩種類型的消息 - 通知消息和數據消息。你使用哪一個? –

+0

我安卓最新版本7.0+介紹DOZE,當應用程序停止運行或不運行時,不允許後臺服務。 https://developer.android.com/about/versions/nougat/android-7.0-changes.html –

+0

可能有幫助[post](https://stackoverflow.com/q/39504805/4625829) –

回答

0

您是否在Java代碼中添加了Firebase服務? 這裏是鏈接:firebase/quickstart-android

您必須添加在java文件夾的3 Java文件以及在添加這些服務的名稱AndroidManifest.xml中

+0

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/18289146) –

+0

我在清單和代碼中添加了服務,是的... – NullPointerException

0

似乎火力只能如果收到通知設備 已啓動應用程序,而不是100%關閉,我的意思是,只需使用 後退鍵關閉它,但不會終止應用程序進程。

不,FCM會發送到所有具有Google Play服務和目標應用程序的設備。這就是爲什麼它被稱爲推送通知。

您的應用程序還可以得到,當它運行的通知,來處理那些你需要重寫

onMessageRecieved(RemoteMessage mes); 

可能有很多原因,沒有得到通知的應用程序。他們中的一些可能是:

  • 消息服務不包括在未正確配置清單

  • 播放服務。或者不在電話中。

  • 有時延遲很高(很少)。我注意到它在編寫後有時花費大約2-3分鐘 。

  • SHA1指紋未在控制檯中註冊和/或更新的google-services.json不在源中。

  • 卸載並重新安裝應用程序。所以這個令牌可能會發生再生。

請按照此鏈接開始使用消息傳遞。

https://firebase.google.com/docs/cloud-messaging/android/client

+0

SHA1未在控制檯中註冊,但因爲它是可選的。會影響嗎?這是記錄在任何地方? – NullPointerException

+0

註冊它總是更好。確保您提交調試密鑰的發佈版本和釋放密鑰的調試目的。這裏是如何獲得密鑰的SHA1 https://stackoverflow.com/questions/15727912/sha-1-fingerprint-of-keystore-certificate – coder3101

+0

爲什麼更好?在網站的文檔中,它被告知它們是可選的,僅用於其他服務,而不是用於推送 – NullPointerException

0

如果你是從你的火力控制檯發送將其發送通知消息,所以那些你不會得到,如果你的應用程序被關閉,你需要發送具有數據有效載荷,其控制檯沒有消息做。

https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages

+0

有可能發送一個沒有服務器?只用Firebase面板? – NullPointerException

+0

沒有,正如我所說的控制檯不發送數據消息 – tyczj

+0

謝謝,在文檔中解釋,如果它發送沒有playload它不會到達應用程序關閉的設備? – NullPointerException

相關問題