Я использую FCM для отображения уведомлений pu sh, но когда приложение находится в фоновом режиме или закрыто, уведомление не отображает действия.
Я получаю сообщение в полученном сообщении и создаю уведомление, используя NotificationCompat.Builder
val notification: Notification =
NotificationCompat.Builder(this, getString(R.string.default_notification_channel_id))
.setContentTitle(message.notification?.title ?: "Title")
.setContentText(message.notification?.body ?: "Body")
.setStyle(
NotificationCompat.BigTextStyle()
.bigText(message.notification?.body ?: "Grant access?")
)
.addAction(getApproveAction(message.data["pushId"] ?: ""))
.addAction(getRejectAction(message.data["pushId"] ?: ""))
.setSmallIcon(R.drawable.logo)
.build()
val manager = NotificationManagerCompat.from(applicationContext)
manager.notify(NOTIFICATION_ID, notification)
методы действия выглядят очень похожими, с той лишь разницей, что действие и логическое значение ACCEPTED
. Вот как выглядит действие утверждения:
private fun getApproveAction(pushId: String): NotificationCompat.Action {
val approveIntent =
Intent(this, NotificationActionReceiver::class.java).setAction(getString(R.string.notification_action_approve))
.apply {
putExtra(PUSH_ID, pushId)
putExtra(ACCEPTED, true)
}
val approvePendingIntent: PendingIntent =
PendingIntent.getBroadcast(this, 1, approveIntent, PendingIntent.FLAG_CANCEL_CURRENT)
return NotificationCompat.Action(R.drawable.done, "Accept", approvePendingIntent)
}
Когда приложение находится на переднем плане, уведомление отлично отображается с двумя действиями. Но когда приложение заблокировано или закрыто, я вижу только заголовок и тело, никаких действий. Я тестирую эмулятор пикселя 3a с Android 10.
Я попытался обновить формат намерения, чтобы он был похож на тот, который описан здесь { ссылка }, но мне не повезло .