【问题标题】:push silent notification through GCM to Android/IOS通过 GCM 向 Android/IOS 推送静默通知
【发布时间】:2016-04-11 17:46:00
【问题描述】:

我正在寻求向应用程序发送状态更新,该应用程序可以(或不)保持沉默。

例如,如果用户从他们的一个朋友那里收到一条新消息,我想发送这样的消息并能够显示带有声音的警报。

但在静默情况下,我希望用户不要注意到此类通知。它必须由应用程序收集;例如,如果我的用户有两个设备并且他在其中一个设备上更改了他的名字,我想向另一个设备(正在休眠)发送一个静默的名称更新,这应该会在后台触发一个更改(被分派到应用程序)。

根据我读到的内容,这实际上是可能的,但我对它的实际情况或应该如何完成感到很困惑,而且有时会出现一些矛盾。作为后端开发人员,我可以做任何事情,但我需要确保它适用于前端人员。

这里有一些相关的话题:

Silent background push on iOS and Android

Push Notifications without alert

iPhone push notification without alert

Android Silent Push

【问题讨论】:

    标签: android ios google-cloud-messaging


    【解决方案1】:

    安卓:

    更新: FCM 的新文档:https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages

    只要您不在有效负载中包含notification 标签并在其中放置data 标签,您就会收到无提示通知

    这个例子会显示一个通知

    { "notification": {
        "title": "Portugal vs. Denmark",
        "text": "5 to 1"
      },
      "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
    }
    

    这不会显示通知

    {
       "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
       "data" : {
         "Nick" : "Mario",
         "body" : "great match!",
         "Room" : "PortugalVSDenmark"
       },
     }
    

    去这里阅读更多https://developers.google.com/cloud-messaging/concept-options#notifications_and_data_messages

    iOS

    将标签 contentAvailable: 1 添加到您的 json 有效负载中,您会收到一个静默通知

    就这么简单

    【讨论】:

    • 您好,感谢您的回答。在 android 用户可以禁用推送通知。如果用户从设置中禁用应用程序的推送通知,静默推送会发生什么情况?还可以收到 daha 通知吗?
    • iOS 的正确标签是“content-available”,您必须确保“aps”中没有包含“sound”、“badge”或“alert”键字典。您还必须将您的应用程序配置为具有“远程通知”后台模式。 developer.apple.com/library/content/documentation/…
    • 我的经验是这样不行。如果您发送“数据”属性,则托盘中的通知仍会以默认应用程序名称显示。如果“数据”包含“标题”和“正文”,则显示这两个。适用于 Android,尚未在 iPhone 上测试。
    【解决方案2】:

    接受的答案是指向已弃用的文档。

    你应该改用这个:Firebase documentation

    数据信息如下:

    {
      "message":{
        "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
        "data":{
          "Nick" : "Mario",
          "body" : "great match!",
          "Room" : "PortugalVSDenmark"
        }
      }
    }
    

    还有通知消息:

    {
      "message":{
        "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
        "notification":{
          "title":"Portugal vs. Denmark",
          "body":"great match!"
        },
        "data" : {
          "Nick" : "Mario",
          "Room" : "PortugalVSDenmark"
        }
      }
    }
    

    希望这会让其他人避免我因接受的答案而感到头疼。

    【讨论】:

    • 好久不见了:)
    • @Onza True :) 但它仍然出现在谷歌搜索中,所以我想其他人也可能会找到它。不过我可能应该看看日期。
    猜你喜欢
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多