2017-06-13 126 views
1

我的問題是有關應用程序終止時iOS和Android設備上的標準遠程推送通知。遠程推送通知和終止的應用程序

簡而言之:

有不同的應用程序的狀態/模式:

  • 前景
  • 背景
  • 懸浮
  • 終止

有不同的通知類型:

  • 普通通知(包含警報信息)
  • 數據/靜音通知(包含數據有效載荷)
  • 混合通知(警報和數據)

對於前景,背景和掛起模式是清晰並且在iOS和Android上運行得非常好。取決於通知類型,如文檔中所述的預期行爲。

但是,當應用程序終止時,iOS和Android的遠程通知似乎存在本質區別。

對於iOS:如果應用程序已終止(未掛起),則iOS系統會收到標準的遠程通知並顯示在通知中心。沒有委託被調用,並且應用程序未被置於後臺模式(即使啓用了遠程推送後臺模式)。當用戶點擊通知時,應用程序啓動,並通過適當的代表提供通知對象。總結:即使應用程序被強制退出,用戶也可以在自己的設備上收到推送通知。

對於Android:當應用程序終止時,標準的遠程推送通知不會顯示在通知中心。 (一旦應用程序啓動並投入後臺通知被接收並正確顯示。

,因爲只有前臺和後臺模式提到的文件是非常不清楚。 https://firebase.google.com/docs/cloud-messaging/concept-options https://firebase.google.com/docs/cloud-messaging/android/receive

有許多討論得出這樣的結論:應用程序強制關閉後,系統托盤(通知中心)中不顯示遠程通知,但關於設備重新啓動後未啓動應用程序的預期行爲的討論相當少。

但是,也在討論中即使應用程序已被終止(Android push notifications not being received when app closed),系統托盤中也始終顯示遠程推送。這與iOS的行爲是一樣的。

爲了說明問題:即使應用程序已終止/強制退出/未運行,是否可以在Android上向設備的系統托盤發送遠程推送通知?

回答

1

我現在可以回答我自己的問題:可以在應用程序未運行時向Android設備發送推送通知(位於通知中心)。

未發送通知的問題是由於華爲的EMUI和特定的節電設置造成的。在華爲P8,P9以及其他許多帶有EMUI的設備上,應用程序不會在未運行時收到通知。必須在節電設置中明確授權它們。

+0

我不明白你的答案,你的意思是,如果我強迫退出我的android應用程序(設置 - >應用程序 - > MyApp - >強制停止),我仍然可以收到推送消息?或者,也許你的手機無聲地強制退出後臺模式的應用程序? – lelloman

+0

據我所知,如果您退出應用程序或系統將其殺死,這並沒有什麼不同。如果它已退出/終止/未運行,則設備會在Google電話和其他許多設備上收到推送通知。但在我的情況下(手動強制退出應用程序),華爲P8的默認電池節能設置禁止了此行爲。在Google手機上,它在默認設置下運行良好。 –

+0

感謝您的回覆,我所經歷的是,如果應用程序已被迫停止(從設置)沒有通知顯示。強制停止與非運行不同,強制停止時,應用程序不應該執行任何操作,直到用戶主動啓動它爲止。你確認你可以看到通知,即使應用程序被強制停止? – lelloman