当前位置: 首页 > 知识库问答 >
问题:

收到Firebase云消息,但没有弹出!!!--科特林

柴修筠
2023-03-14

我正在构建一个从Firebase接收通知的应用程序。应用程序收到通知但没有弹出它。

任何帮助!

类MyFirebaseMessagingService:FirebaseMessagingService(){

val TAG = "FirebaseMessagingService"

override fun onMessageReceived(p0: RemoteMessage) {    

    super.onMessageReceived(p0)
    Log.d(TAG, "{$p0}")


    if (p0.notification !=null){
        showNotification(p0.notification?.title, p0.notification?.body)

    }

}


private fun showNotification(title: String?, body: String?){

    val intent=Intent(applicationContext, MainActivity::class.java)
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
    val pendingIntent=PendingIntent.getActivities(
        this,
        0,
        arrayOf(intent),
        PendingIntent.FLAG_UPDATE_CURRENT
    )
    //val soundUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)


    val notificationBuilder = NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_logo_border)
        .setContentTitle(title)
        .setContentText(body)
        .setAutoCancel(true)
        .setContentIntent(pendingIntent)
        .setPriority(2)

    val notificationManager=getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
    notificationManager.notify(0, notificationBuilder.build())


}

override fun onNewToken(token: String) {
    super.onNewToken(token)
    Log.d(TAG, "Refreshed token: $token")

}

共有1个答案

宋晋
2023-03-14

我想这是因为Android8.0的通知通道。

在生成通知之前调用此函数。

private fun createNotificationChannel(context: Context) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            val existingChannel = notificationManager.getNotificationChannel(CHANNEL_ID)
            if (existingChannel == null) {
                // Create the NotificationChannel
                val name = context.getString(R.string.defaultChannel)
                val importance = NotificationManager.IMPORTANCE_DEFAULT
                val mChannel = NotificationChannel(CHANNEL_ID, name, importance)
                mChannel.description = context.getString(R.string.notificationDescription)
                notificationManager.createNotificationChannel(mChannel)
            }
        }
    }

并将其与代码一起使用

NotificationManagerCompat.from(context).apply {
    cancelAll() // Remove prior notifications; only allow one at a time.
    notify(1 or your notification id, notificationBuilder.build())
}

而不是

val notificationManager=getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager 
notificationManager.notify(0, notificationBuilder.build())
 类似资料:
  • 我正在使用Firebase云消息向我的android设备发送通知。在我的项目控制台的“报告”部分,我收到了0条消息,发送了100条消息。问题是,我实际上在我的设备上收到了通知,但为什么它们没有出现在云消息报告中呢? 我该如何解决这个问题呢?

  • 我已经设置了一个启用推送通知的iOS应用程序。 我可以将消息推送到应用程序,例如,徽章计数工作并相应更新。 但是我从来没有在锁屏或其他地方看到标准的推送通知弹出窗口,尽管手机会震动,所以信息可以通过。 即使应用程序关闭或不在后台。 这是有效载荷:

  • 我使用的是spring boot 2.2.4版本,spring-kafka 2.4.2版本 我的场景是以下一个: 所以我写了folloqing代码 生产者微服务 spring kafka配置: 在制作人方面所有的工作都很好。我能创造话题和发送信息。 消费者微服务 动态侦听器类 当我在生产者端发送消息时,我可以看到以下日志: 在消费者方面,我没有看到任何信息。我只看到下面的指纹: 谁能告诉我我错在哪

  • 通知处理程序 邮递https://fcm.googleapis.com/fcm/send 当我发送通知与有效载荷上面,通知交付到系统托盘,当我点击它,我有以下三种情况: 应用程序处于后台(关闭/终止),显示“数据”并调用onLaunch方法。 问题是,如何接收或处理带有通知的“数据”也发送到系统托盘?任何帮助都将不胜感激。

  • 我正在接收令牌,但当我从Firebase控制台发送通知时,我的设备上不会发生任何事情,无论应用是否处于后地。与此同时,我的Android应用程序收到通知。 我遵循了这个指南: https://firebase.google.com/docs/cloud-messaging/ios/client 为了确保这一点,我还在 https://github.com/firebase/quickstart-i

  • null 我遵循Xamarin的文档实现了这个功能。 然后一步一步地执行,直到下面的部分: 后台通知 我点击了Log Token按钮并收到了令牌。 null Firebase控制台显示消息为“完成”。 我错过了什么来解决这个问题?