Это ожидается. FCM имеет различное поведение для статуса приложения (передний план и фон / убит). Вы должны обрабатывать это с помощью полезной нагрузки, которую вы отправили с сервера, в соответствии с вашим вариантом использования.
Сообщение, отправленное с сервера, должно быть отправлено в формате «уведомления» или «данные», из панели мониторинга или API на стороне сервера. ,Примечание: из firebase dashobard вы можете отправлять только тело уведомления, а не данные. В таких случаях FCM будет отображать уведомление напрямую, без обратного вызова для вашего приложения.
На стороне сервера Ниже приведены примеры форматов:
Уведомление Тип Формат Примечание. Система Android по умолчанию отображает уведомление в области уведомлений, и вам не нужно его отображать.
{
"to": "your_token_id",
"notification" : {
"title" : "FCM Notification title!",
"body" : "FCM Notification subtext!",
"content_available" : true,
"priority" : "high"
}
}
Данные Формат (для получения обратного вызова в приложении,на переднем плане и на заднем плане) Примечание. Вы должны самостоятельно обрабатывать обратный вызов и отображать уведомление.
{
"to": "your_token_id",
"data" : {
"title" : "FCM Notification Title ",
"subtext" : "FCM Notification Sub Title",
"type" : "999",
"priority" : "high"
}
}
Клиент Android Для обработки полезной нагрузки, полученной в приемнике Android, просмотрите официальное руководство здесь
/* The class extends FirebaseMessagingService() */
override fun onMessageReceived(remoteMessage: RemoteMessage) {
Log.d(TAG, "From: ${remoteMessage.from}")
// Check if message contains a data payload.
remoteMessage.data.isNotEmpty().let {
Log.d(TAG, "Message data payload: " + remoteMessage.data)
if (/* Check if data needs to be processed by long running job */ true) {
// For long-running tasks (10 seconds or more) use WorkManager.
scheduleJob()
} else {
// Handle message within 10 seconds
handleNow()
}
}
// Check if message contains a notification payload.
remoteMessage.notification?.let {
Log.d(TAG, "Message Notification Body: ${it.body}")
}
// Also if you intend on generating your own notifications as a result of a received FCM
// message, here is where that should be initiated. See sendNotification method below.
}
Проверьте документацию здесь
