簡體   English   中英

FCM前台和后台通知布局視圖和PendingIntent

[英]FCM Foreground and Background notification layout view and PendingIntent

我正在使用 Firebase 和 FCM 創建通知

class FcmServices: FirebaseMessagingService() {

    override fun onMessageReceived(remoteMessage: RemoteMessage) {
        sendNotification(remoteMessage)
    }

    override fun onNewToken(token: String) {
        super.onNewToken(token)
    }

    private fun sendNotification(remoteMessage: RemoteMessage) {

        val notifTitle = remoteMessage.notification?.title
        val notifBody = remoteMessage.notification?.body

        val builder: NotificationCompat.Builder?
        val notificationManager =
            this.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

        val channelId = "101"

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val importance = NotificationManager.IMPORTANCE_DEFAULT
            val notificationChannel = NotificationChannel(channelId, "notification", importance)
            notificationManager.createNotificationChannel(notificationChannel)
            builder = NotificationCompat.Builder(applicationContext, notificationChannel.id)
        } else {
            builder = NotificationCompat.Builder(applicationContext)
        }

        val intent = Intent(this, NotifikasiActivity::class.java)
        intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
        val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)

        builder.setSmallIcon(R.drawable.logo_bprmsa)
            .setLargeIcon(
                BitmapFactory.decodeResource(
                    this.resources,
                    R.drawable.logo_bprmsa
                )
            )
            .setContentIntent(pendingIntent)
            .setContentTitle(notifTitle)
            .setContentText(notifBody)
            .setDefaults(Notification.DEFAULT_VIBRATE)

        var alarmSound: Uri? = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
        if (alarmSound == null) {
            alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)
            if (alarmSound == null) {
                alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
            }
        }
        builder.setSound(alarmSound)
        builder.setAutoCancel(true)
        builder.setWhen(System.currentTimeMillis())
        builder.setDefaults(NotificationCompat.DEFAULT_VIBRATE)
        builder.priority = NotificationCompat.PRIORITY_HIGH
        notificationManager.notify(Random().nextInt(), builder.build())

    }

}

單擊從 Firebase 收到的通知后,我需要打開NotificationActivity ,但問題是PendingIntent在應用程序處於后台時不起作用 state。前台后台state 代碼之間是否存在任何不同的情況?

其次,前景背景布局也不同(背景state 沒有顯示圖標)

通知

https://firebase.google.com/docs/cloud-messaging/concept-options

根據谷歌的官方文檔,這是故意的。 如果您的應用程序未在前台運行,則圖標和任何其他按鈕或您希望顯示的除標題和消息以外的其他內容將不會顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM