Android静音推送通知

时间:2016-10-03 15:12:22

标签: android push-notification google-cloud-messaging android-notifications firebase-cloud-messaging

我们认为默认情况下Android的推送通知是静默通知,必须是以编程方式在屏幕上发出通知的开发人员。或者默认情况下推送通知不是静默的?

今天我们使用我们的应用程序从GCM服务器收到的这个JSON结构。

{ 
   "data": 
         {
               “Type” : “2”, 
               “_dId” : “3718829”, 
               “_mId” : “9924012”, 
               “_msg” : “HOLA JVE”, 
               “collapse_key” : “9924012”
          },                                       
   "to" : "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

此结构对静默通知有效还是有其他结构? 我们在这个话题上真的很丢失。在这个问题之后,任何人都有一个带有消息标题标签的Android推送通知的json结构?

其他问题:向用户显示静默通知时?当用户打开应用程序或用户解锁手机时?

2 个答案:

答案 0 :(得分:2)

  

或者推送通知默认情况下不是静音?

有两种方式可以在Android中收到通知,或者是通知托盘,或者您自己在onMessageReceived()处理通知,具体取决于您使用的有效负载(NotificationData

根据您的询问(无声推送通知),我猜您更喜欢后者,因为您将能够自己处理它。根据{{​​3}}:

  

当您希望GCM代表客户端应用程序显示通知时,请使用通知。 当您希望应用处理显示或处理Android客户端应用中的消息时使用数据消息,..

所以你现在正在使用的(data有效载荷)应该没问题。但是,如果您的有效负载中 notificationdata,则必须考虑应用的状态。对于此GCM Payload docsdata有效负载:

App state   Notification        Data                Both
Foreground  onMessageReceived   onMessageReceived   onMessageReceived
Background  System tray         onMessageReceived   Notification: system tray
                                                    Data: in extras of the intent.
  

..任何人都有一个带有消息和标题标签的Android推送通知的json结构?

正如我在上面链接的文档中所提到的那样:

  

数据消息只有自定义键/值对。

所以我认为只要不是保留字就可以使用密钥,如FCM docs所述:

  

密钥不应该是保留字(“from”或以“google”或“gcm”开头的任何字词)。请勿使用此表中定义的任何单词(例如collapse_key)。

  

向用户显示静默通知时?当用户打开应用程序或用户解锁手机时?

我认为我上面提到的内容几乎涵盖了这一部分(见表)。

答案 1 :(得分:1)

在Android上,与iOS不同,该应用负责创建和显示推送通知。所以,是的,默认情况下你可以认为它们是无声的,尽管你并没有在Android上完全拥有这个概念。

我通常做的是,如果不显示通知,请添加silent字段。例如:

 {
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification" : {
      "body" : "Will not show this message",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
      "silent": "true"
    }
  } 

然后您可以使用静默字段根据if语句显示或不显示通知。