仅发送"数据" PARAMS

时间:2016-06-17 09:19:33

标签: push-notification firebase firebase-cloud-messaging

我正在使用FCM向Android发送推送通知。

如果我发送notification payload通知,那么他们就不会被分组。 如果我在通知中仅使用data,如何将它们分开? 例如:

{ 
   "to":"eNu-qhBtQdI:APA91bFewNZjgMNep6wqsrECDLXMcaPsBMIFktGl77d4l5cWIiqebN6aDs-tO2wHm0K82Qoayzlt3LQ0VtXm12CAhk8wNMyJX8fc0I1XAIdqp3zOa0o6hwYpnYwdOAeGXEhYVCw3sERJ",
   "data":{
       "body":"great match",
       "title":"Portugal vs. Denmark",
       "sound":"default",
   }
}

2 个答案:

答案 0 :(得分:0)

如果您在应用中的onMessageReceived处理程序中手动构建通知,并为每个通知使用相同的ID,则会相互替换。

NotificationManager.notify()的文档:

  

发布要在状态栏中显示的通知。如果您的应用程序已经发布了具有相同标记和ID的通知但尚未取消,则它将被更新的信息替换。

因此,如果您希望将 替换为,则需要在构建通知时使用不同的ID。

答案 1 :(得分:0)

  
      
  • 当您的应用在后台时发送通知。 - 在此   如果是,通知将传送到设备的系统托盘。一个   用户点按通知会默认打开应用启动器。
  •   
  • 包含通知和数据有效负载的邮件。在这种情况下,   通知将传递到设备的系统托盘和数据   有效载荷是在发射器意图的额外内容中提供的   活性。
  •   

Firebase downstream messages.

  

他们没有分组。

他们没有被分组,因为从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.