Я отправляю FCM, используя облачную функцию, подобную этой
const payload = {
data: {
imagePath: imagePath,
priority: priority,
title: title,
body: body
}
}
await admin.messaging().sendToDevice(token,payload)
, вот код моего Android приложения, в onMessageReceived
, этот код onMessageReceived
ниже фактически вызывается, но я не Не знаю, почему уведомление не отображается на моем устройстве
override fun onMessageReceived(remoteMessage: RemoteMessage) {
super.onMessageReceived(remoteMessage)
var title: String = ""
var body: String = ""
var priority: String = ""
var imagePath: String = ""
remoteMessage.notification?.let {
title = it.title ?: ""
body = it.body ?: ""
}
val notificationData = remoteMessage.data
priority = notificationData["priority"] ?: ""
imagePath = notificationData["imagePath"] ?: ""
title = notificationData["title"] ?: ""
body = notificationData["body"] ?: ""
setUpNotification(title,body,priority,imagePath)
}
и не отображает уведомление на устройстве
private fun setUpNotification(title: String, message: String, priority: String, imagePath: String) {
val channel = if (priority == "high") NOTIFICATION_CHANNEL_IMPORTANT else NOTIFICATION_CHANNEL_MISCELLANEOUS
var notification = NotificationCompat.Builder(this, channel)
.setSmallIcon(R.drawable.ic_stat_ic_notification)
.setContentTitle(title)
.setContentText(message)
.setCategory(NotificationCompat.CATEGORY_MESSAGE)
.setAutoCancel(true)
.setOnlyAlertOnce(true)
.build()
notificationManager.notify(1, notification)
}
, но если я добавлю уведомление (а не только сообщение с данными) на полезная нагрузка, как это
const payload = {
notification: {
body: body,
title: title,
},
data: {
imagePath: imagePath,
priority: priority,
title: title,
body: body
}
}
, тогда уведомление будет отображаться на моем устройстве