我正在使用FCM向Android发送推送通知。
如果我发送notification payload
通知,那么他们就不会被分组。
如果我在通知中仅使用data
,如何将它们分开?
例如:
{
"to":"eNu-qhBtQdI:APA91bFewNZjgMNep6wqsrECDLXMcaPsBMIFktGl77d4l5cWIiqebN6aDs-tO2wHm0K82Qoayzlt3LQ0VtXm12CAhk8wNMyJX8fc0I1XAIdqp3zOa0o6hwYpnYwdOAeGXEhYVCw3sERJ",
"data":{
"body":"great match",
"title":"Portugal vs. Denmark",
"sound":"default",
}
}
答案 0 :(得分:0)
如果您在应用中的onMessageReceived
处理程序中手动构建通知,并为每个通知使用相同的ID,则会相互替换。
NotificationManager.notify()的文档:
发布要在状态栏中显示的通知。如果您的应用程序已经发布了具有相同标记和ID的通知但尚未取消,则它将被更新的信息替换。
因此,如果您希望将 替换为,则需要在构建通知时使用不同的ID。
答案 1 :(得分:0)
- 当您的应用在后台时发送通知。 - 在此 如果是,通知将传送到设备的系统托盘。一个 用户点按通知会默认打开应用启动器。
- 包含通知和数据有效负载的邮件。在这种情况下, 通知将传递到设备的系统托盘和数据 有效载荷是在发射器意图的额外内容中提供的 活性。
他们没有分组。
他们没有被分组,因为从Firebase控制台发送的推送消息无论如何都是通知,您无法从Console发送数据有效负载,这是Console的限制。 因此,如果您要从控制台发送通知,那么它将被传送到设备的系统托盘,操作系统正在为您生成通知,并且每个通知ID都不同。
但是在数据有效负载的情况下,您使用以下代码自己创建通知ID:
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// NOTE: mId should be different for every push if you don't want them to group, something like a mId = new Random().nextInt(9999) may work
mNotificationManager.notify(mId, mBuilder.build());
如果您不知道,来自firebase的Push消息分为两部分 - 通知和数据有效负载。 Read More.