在我的应用程序中,我有几个活动,其中一个是聊天。在这个屏幕中,我有正在与我聊天的人的ID,每次我发送消息时,都会发送一个推送通知,其中包含该消息和正在与我聊天的人的ID。当我正在与此人聊天时,我需要阻止来自他们的通知,只有在我没有与此人进行公开聊天时才接收通知。我该如何做到这一点?我使用Firebase作为后端。
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage) {
remoteMessage.notification?.let { notification ->
val data = remoteMessage.data
val type = data["type"] // chat message,like etc
val id = data["id"] //userId
val notificationChannelId = getString(R.string.default_notification_channel_id)
val soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
val intent = setIntent(remoteMessage).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
val pendingIntent = PendingIntent.getActivity(this,
0,
intent,
PendingIntent.FLAG_CANCEL_CURRENT)
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val notificationChannel = NotificationChannel(notificationChannelId, CHANNEL_SPEEACHT, NotificationManager.IMPORTANCE_DEFAULT)
notificationManager.createNotificationChannel(notificationChannel)
}
val notificationBuilder = NotificationCompat.Builder(this, notificationChannelId)
.setContentTitle(notification.title ?: "")
.setContentText(notification.body ?: "")
.setSmallIcon(R.drawable.ic_stat)
.setSound(soundUri)
.setColor(ContextCompat.getColor(applicationContext, R.color.colorNotification))
.setAutoCancel(true)
.setContentIntent(pendingIntent)
notificationManager.notify(0, notificationBuilder.build())
}
}
2条答案
按热度按时间dnph8jn41#
我认为这与firebase-cloud-messaging无关,因为firebase-cloud-messaging只是一个消息通道,所以你应该在你自己的业务代码中完成它。
一种建议的方法是您可以设置一个条件。如果活动是可见的,并且您在onMessageReceived中接收到的用户ID与您正在聊天的用户ID相同,那么您不应该在onMessageReceived函数中创建自己的通知。
vwkv1x7d2#
Android #聊天#通知#闪屏
问题:当应用程序处于后台时,如何从通知中打开特定屏幕。
答复:
Splashscreen.java -〉onCreate()
记住密码.