如何创建多个前台通知?
How to create more than one foreground notification?
下面是我的服务中的一段代码 class。
如果用户 "joins a team" (operation = 0) 那么它会创建一个具有指定规格的通知,但是如果 用户共享他们的位置 (operation = 1) 那么它应该创建一个单独的前台通知。相反,一个只是取代另一个。
不知道为什么,他们有不同的ID只是同一个频道。 我也试过分开他们的频道ID,还是一样的问题
int id = NOTIFICATION_LOCATION;
int icon = R.drawable.ic_gps_on;
String message = "Tap to disable location updates";
if (operation == 0) {
id = NOTIFICATION_RESPONDER;
icon = R.drawable.ic_responder_icon;
message = "Tap to leave the responding team";
}
Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID_1)
.setSmallIcon(icon)
.setContentTitle("Location established")
.setContentText(message)
.setContentIntent(PendingIntent.getBroadcast(getApplicationContext(), 0, getBroadcastIntent(operation), PendingIntent.FLAG_UPDATE_CURRENT))
.setColor(ContextCompat.getColor(getApplicationContext(), R.color.primaryColor))
.setDefaults(Notification.DEFAULT_SOUND)
.setVisibility(VISIBILITY_PUBLIC)
.build();
startForeground(id, notification);
您使用 startForeground()
操作的通知是与前台服务对应的 "official" 通知; Android 坚持让你随时可用的服务是 运行。
如果您在对 startForeground()
的后续调用中提供不同的通知渠道 ID,我并不感到惊讶,它 擦除 和 替换 原来的通知。否则,您最终可能会为单个服务收到多个前台通知,事情可能会变得混乱。
相反,只需使用 NotificationManager.notify()
来管理超出原始前台服务通知的任何通知。为这些额外的通知使用不同的 ID。
一个好的做法是为您的前台服务通知使用固定的 ID。您仍然可以随意更改 Notification
;当您有固定 ID 时,更容易记住哪个 Notification
是您的 "official"。
您还可以使用 notify()
操纵您的 "official foreground service notification";您不必使用 startForeground()
。在开始时只需要 一次 调用 startForeground()
来将服务与特定通知 ID 相关联。
下面是我的服务中的一段代码 class。
如果用户 "joins a team" (operation = 0) 那么它会创建一个具有指定规格的通知,但是如果 用户共享他们的位置 (operation = 1) 那么它应该创建一个单独的前台通知。相反,一个只是取代另一个。
不知道为什么,他们有不同的ID只是同一个频道。 我也试过分开他们的频道ID,还是一样的问题
int id = NOTIFICATION_LOCATION;
int icon = R.drawable.ic_gps_on;
String message = "Tap to disable location updates";
if (operation == 0) {
id = NOTIFICATION_RESPONDER;
icon = R.drawable.ic_responder_icon;
message = "Tap to leave the responding team";
}
Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID_1)
.setSmallIcon(icon)
.setContentTitle("Location established")
.setContentText(message)
.setContentIntent(PendingIntent.getBroadcast(getApplicationContext(), 0, getBroadcastIntent(operation), PendingIntent.FLAG_UPDATE_CURRENT))
.setColor(ContextCompat.getColor(getApplicationContext(), R.color.primaryColor))
.setDefaults(Notification.DEFAULT_SOUND)
.setVisibility(VISIBILITY_PUBLIC)
.build();
startForeground(id, notification);
您使用 startForeground()
操作的通知是与前台服务对应的 "official" 通知; Android 坚持让你随时可用的服务是 运行。
如果您在对 startForeground()
的后续调用中提供不同的通知渠道 ID,我并不感到惊讶,它 擦除 和 替换 原来的通知。否则,您最终可能会为单个服务收到多个前台通知,事情可能会变得混乱。
相反,只需使用 NotificationManager.notify()
来管理超出原始前台服务通知的任何通知。为这些额外的通知使用不同的 ID。
一个好的做法是为您的前台服务通知使用固定的 ID。您仍然可以随意更改 Notification
;当您有固定 ID 时,更容易记住哪个 Notification
是您的 "official"。
您还可以使用 notify()
操纵您的 "official foreground service notification";您不必使用 startForeground()
。在开始时只需要 一次 调用 startForeground()
来将服务与特定通知 ID 相关联。