當火力地堡服務收到RemoteMessage
,和應用程序之前已經通過滑開殺了,我必須做什麼,以使應用程序仍然會處理消息?火力地堡服務生命週期
這是一個數據報文,所以行爲是過程,而不是付諸GUI的通知。
當火力地堡服務收到RemoteMessage
,和應用程序之前已經通過滑開殺了,我必須做什麼,以使應用程序仍然會處理消息?火力地堡服務生命週期
這是一個數據報文,所以行爲是過程,而不是付諸GUI的通知。
編輯以下解決方案適用於舊的谷歌播放服務(即11.0.2),像(11.6.0)這樣的新版本將handleIntent
聲明爲final
,這使得此解決方案不再有效。
您必須覆蓋handleIntent(Intent)
不調用它super.handleIntent(Intent)
。這種方法的問題是沒有創建RemoteMessage
對象。我親手創造我自己是這樣的:
RemoteMessage message = new RemoteMessage.Builder(FirebaseInstanceId.getInstance().getToken())
並將數據傳遞到地圖,然後onMessageReceived(RemoteMessage)
自己(這顯然是可選的,你不需要該對象的話)。
這顯然不是最好的方法,但它是我發現的唯一途徑,讓我打造的通知對我自己或者完全忽略它。
你可以註冊一個後臺守護進程服務,但我認爲它會被終止過,當用戶滑開,所以基本上是沒有辦法做到這一點,你應該處理這似乎是一個例外。
你可以把任務的onDestroy
方法在背景異步服務來處理消息。
你的應用程序的異步服務將始終在後臺通過聽BroadcastReceiver
運行,然後,一旦任務完成,你可以finish
活動,以終止該應用
將其擦除並立即發送FireBase通知後,它甚至不會進入'onMessageReceived(RemoteMessage remoteMessage)'方法。即使在刷完它後,我如何使它調用該方法? – user3635998
如果您將FireBase通知服務註冊爲在後臺運行的異步任務(使用'BroadcastReceiver'),並從 火災基站發出推送通知,它應該被觸發並開始處理消息。 參考文獻見GCM,推子彈等... – vikytech
組爲'<接收機機器人:名稱=「 receiver.MyReceiver」機器人出口=‘真’><意圖濾波器><動作機器人:名稱=「COM。 google.firebase.MESSAGING_EVENT「/>
當firebase消息到達時,android操作系統(也許是google服務)廣播MESSAGING_EVENT意圖。
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
您可以實現廣播接收器有意向過濾器上面的意圖,並在它的的onReceive()方法過濾,你適當的服務應啓動(如果沒有運行)。只有廣播接收器才能夠響應,而不管其應用程序的運行狀態如何。
設置爲'
你的應用程序將在onMessageReceived方法接收數據的消息,即使應用有 –
@UsmanRana事實並非如此,如果應用程序是在後臺火力地堡自己處理通知,並跳過onMessageReceived – mhenryk
@mhenryk請仔細閱讀問題,他是使用在這兩種情況下都會調用「數據消息」併爲此onMessageReceived調用 –