将Google Play服务更新为自己显示的8.4.0推送通知后

时间:2015-12-28 09:09:36

标签: android push-notification google-cloud-messaging google-play-services

对于推送通知,我们使用的是GCM(Google云消息传递)。当我们使用播放服务时它工作正常:8.3.0。我们使用自己的接收器处理推送通知。升级到com.google.android.gms:play-services:8.4.0后 推送不到我的myGcmListenerService,而是在通知栏中单独显示。它还在Log中显示此错误 GcmAnalytics: Error while parsing timestamp in GCM event.

使用8.3.0,我们收到了这样的推送: Bundle[{gcm.notification.e=1, google.c.a.ts=234343426, gcm.notification.badge=1, gcm.notification.sound=default, gcm.notification.sound2=default, gcm.notification.body=John M @ Cords, Wires And Cable Ftu, gcm.notification.data={"name":"new_chat_message","message_id":490666,"channel_id":5366}, google.c.a.e=1, collapse_key=com.domain.app.debug}]

随着8.4.0推送如下: Bundle[{notification=Bundle[{sound2=default, e=1, body=John M @ Cords, Wires And Cable Rrr, data={"name":"new_chat_message","message_id":490641,"channel_id":5366}, badge=1, sound=default}], collapse_key=com.domain.app.debug}]

1 个答案:

答案 0 :(得分:4)

在您的服务器中,只需将e字段作为zero字段发送到notification字段。

{
    "to": "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "content_available": true,
    "notification": {
        "e": 0
    },
    "data": {
        "key": "value"
    }
}

然后在android中捆绑包将是:

Bundle[{gcm.notification.e=0, key=value, ...}]

现在,如果您的应用处于后台,它将不会自行显示通知,并会在GcmListenerService中收到该包。

但是,如果您同时拥有通知和数据有效负载且您的应用处于后台,则会自行显示通知,如here所述。

  

包含通知和数据有效负载的混合消息

     

接收包含通知和数据有效负载的消息时的应用行为取决于应用是在后台还是前景 - 基本上是否在接收时处于活动状态。

     
      
  • 在后台时,应用会在通知托盘中收到通知有效内容,并仅在用户点击通知时处理数据有效内容。

  •   
  • 在前台时,您的应用会收到两个有效负载的捆绑包。

  •