Android 通知超时侦听器

Android Notification Timeout Listener

我确实在 android 中使用 Android OREO+ 中的 Notification.Builder 实现了通知功能。如果用户没有点击通知,我需要在一定时间后取消通知。这是我使用 setTimeOutAfter 方法完成的。

https://developer.android.com/reference/android/app/Notification.Builder.html#setTimeoutAfter(long).

现在,我需要向服务器发送一条消息,通知 clicked/timeout 没有发生。我该如何实施?有没有notificationTimeout监听器?

没有什么比超时侦听器更好的了,但是您可以根据自己的目的使用删除意图。您需要 Broadcast Receiver 才能在通知被关闭时执行某些操作(例如调用您的服务器)。

在代码中:

class NotificationDismissedReceiver : BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            // call your server here
        }
    }

    private fun getNotificationWithDeleteIntent() : Notification{
        val deleteIntent = Intent(context, NotificationDismissedReceiver::class.java)
        deleteIntent.action = "notification_cancelled"
        val onDismissPendingIntent = PendingIntent.getBroadcast(context, 0, deleteIntent, PendingIntent.FLAG_CANCEL_CURRENT)

        val builder = NotificationCompat.Builder(context, CHANNEL_ID)
            .setSmallIcon(R.drawable.notification_icon)
            .setContentTitle(textTitle)
            .setContentText(textContent)
            .setPriority(NotificationCompat.PRIORITY_DEFAULT)
            .setTimeoutAfter(TIMEOUT)
            .setDeleteIntent(onDismissPendingIntent)
        
        return builder.build()
    }