簡體   English   中英

當應用程序通過推送通知終止時啟動服務

[英]Start a service when app is terminated via push notification

我正在嘗試通過粘性通知實現后台位置跟蹤,如果應用程序在前台或在手機的任務管理器中打開,我可以輕松地通過通知啟動服務,但是我想通過一個觸發服務啟動例如推送通知,每當我這樣做時,我似乎根本無法啟動服務,並且onMessageReceived只會觸發super.onMessageReceived ,有沒有辦法解決這個問題?

這是我在方法中的代碼

override fun onMessageReceived(p0: RemoteMessage) {
    Intent(this, MyService::class.java).also { intent ->
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) startForegroundService(intent) else startService(intent)
    }
}

通過觸發超級,我的意思是它只顯示帶有我在 firebase 雲消息傳遞選項卡上寫的標題/描述的默認通知

您需要編寫發送 FCM 通知 api,其中您將需要“數據”鍵而不是“通知”。

{
"data": {"description": "TEST", 
"jobCode": "TEST", 
"notification_id": "2",
"body": {"id":"25719","title":"Tele Consulant ","description":"Appointment","text":"Appointment","is_read":0,"opponentsID":"22297","contactIdentifier":"Test Doctor","roomName":"1","eventName":"accept"},
"type": "3",
"Image" : "", 
"title" :" Tele Consulant "},
"to":"c5fHUz8iRh63gXxAR9NYXG:APA91bE78n7Nc4sNxgeETiYo5XYsw0Trhqj1V_vZEaQsoCZg-0n-IhEJ2tJTPAlv0R2Xka3HEwdOw6_kSNqCUHBZmhluDNsAtM8u_GHFjMoaucuCGtjSURq2GIfP5Kgv03j7lCdN8ZjK"
}

消息類型:

通知消息和數據消息。

通知消息包含一組預定義的用戶可見鍵。 通知消息具有可選的通知有效負載,並將傳送到用戶系統托盤。

如果應用程序在前台,如果通知有數據負載,他們將調用 onMessageReceived。

如果應用程序是后台,將顯示通知並通過啟動活動的意圖給出數據有效負載。

如果通知沒有可選的數據負載,則將顯示通知並在單擊時打開應用程序。

數據消息僅包含您的用戶定義的自定義鍵值對。 (解釋如下)。 如果您希望消息始終調用 onMessageReceived,則它們不應包含通知負載,而是數據負載。

暫無
暫無

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

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