我们的应用程序中有类似以下代码的内容。
val pendingIntent = PendingIntent.getActivity(ctx, id.toInt(), intent, PendingIntent.FLAG_CANCEL_CURRENT)
val builder = NotificationCompat.Builder(ctx, Channel.TEST_CHANNEL.channelId)
builder.setTicker(tickerText)
.setContentTitle(contentTitle)
.setContentText(contentText)
.setVibrate(vibrate)
.setSmallIcon(icon)
.setAutoCancel(true)
.setLights(-0xff0100, 300, 1000)
.setSound(uri)
.setContentIntent(pendingIntent)
.setStyle(NotificationCompat.BigTextStyle().bigText(contentText))
.addAction(R.drawable.ic_notification, ctx.getString(R.string.notification), piAction)
val notification = builder.build()
val nf = ctx.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
nf.notify(NOTIFICATION_TAG, id.toInt(), notification)
}
最近我们注意到在运行Android 8+的某些设备上,通知在显示后短暂消失,而没有用户交互。将auto-cancel
设置为false
可以帮助解决问题,但会降低用户体验。
id
是来自数据库的唯一项ID。这可能是需要注意的重要事项 - 从技术上讲,我们可以通过具有相同ID的通知进行显示、取消并再次使用该ID用于类似通知的操作。这可能是原因吗?