在勿扰模式和Doze模式下发送通知的方法与正常情况下相同,但存在一些限制。
在Doze模式下,推送通知的延迟时间将增加。通常,设备将会多次输入Doze模式,而通知的延迟时间将在每次进入Doze模式后增加。如果您希望通知能够及时地到达,请使用setExactAndAllowWhileIdle()方法。
在Doze模式和勿扰模式下,仅允许打扰紧急级别的通知。在您发出通知时,请确保给通知所分配的重要性类别启用了IMPORTANCE_HIGH或IMPORTANCE_MAX。否则,您的通知将不会在Doze模式和勿扰模式下推送。
示例代码:
NotificationChannel channel = new NotificationChannel("channel_id", "channel_name", NotificationManager.IMPORTANCE_HIGH); channel.setBypassDnd(true); channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC); NotificationManager manager = getSystemService(NotificationManager.class); manager.createNotificationChannel(channel);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "channel_id") .setSmallIcon(R.drawable.notification_icon) .setContentTitle("通知标题") .setContentText("通知正文") .setPriority(NotificationCompat.PRIORITY_HIGH);
manager.notify(1, builder.build());