【问题标题】:Android silent push notificationsAndroid 静默推送通知
【发布时间】:2016-10-03 15:12:22
【问题描述】:

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

今天,我们使用我们的应用从 GCM 服务器接收的这种 JSON 结构进行工作。

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

这种结构对静默通知有效还是有不同的结构? 真的,我们对这个话题很迷茫。在这个问题之后,任何人都有一个带有 messagetitle 标签的 Android 推送通知的 json 结构?

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

【问题讨论】:

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


    【解决方案1】:

    或者推送通知默认不静音?

    在 Android 中接收通知有两种方式,一种是通知托盘,另一种是您在 onMessageReceived() 中自行处理,具体取决于您使用的有效负载(NotificationData)。

    根据您的询问(静默推送通知),我猜您更喜欢后者,因为您可以自己处理。根据GCM Payload docs

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

    所以你现在使用的(data 有效载荷)应该没问题。但是,如果您的有效负载中同时notificationdata,则必须考虑应用的状态。参考这个FCM docs,对于data有效载荷:

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

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

    我在上面链接的文档中也提到过:

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

    所以我认为只要它不是保留字,就可以安全地使用密钥,正如docs 中提到的那样:

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


    何时向用户显示静默通知?当用户打开应用程序时还是仅在用户解锁手机时?

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

    【讨论】:

      【解决方案2】:

      在 Android 上,与 iOS 不同,应用负责创建和显示推送通知。所以是的,您可以将它们默认为静音,尽管您在 Android 上并不完全有这个概念。

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-09-24
        • 2018-02-17
        • 2018-12-05
        • 1970-01-01
        • 1970-01-01
        • 2015-04-26
        • 1970-01-01
        • 2016-11-03
        • 2021-09-28
        相关资源
        最近更新 更多