通过GCM将无声通知推送到Android/IOS

Onz*_*nza 15 android ios google-cloud-messaging

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

例如,如果用户从他们的一个朋友那里获得新消息,我想发送这样的消息并且能够显示带声音的警报.

但在无声的情况下,我希望用户不要注意这样的通知.它必须由申请表收集; 例如,如果我的用户有两个设备并且他在其中一个设备中更改了他的名字,我想发送另一个设备(正在休眠)静默名称更新,这应该在后台触发更改(被调度到应用程序).

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

这里有一些相关主题:

iOS和Android上的静音背景推动

推送通知没有警报

没有提醒的iPhone推送通知

Android Silent Push

tyc*_*czj 36

安卓:

更新: 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..."
}
Run Code Online (Sandbox Code Playgroud)

这不会显示通知

{
   "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
   "data" : {
     "Nick" : "Mario",
     "body" : "great match!",
     "Room" : "PortugalVSDenmark"
   },
 }
Run Code Online (Sandbox Code Playgroud)

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

iOS版

将标记添加contentAvailable: 1到您的json有效负载,您将收到静默通知

就这么简单

  • 嗨谢谢你的回答.在Android用户可以禁用推送通知.如果用户从设置中禁用应用程序的推送通知,静音推送会发生什么?还能收到daha通知吗? (2认同)
  • iOS的正确标签是"内容可用",您必须确保不在"aps"字典中包含"声音","徽章"或"警报"键.您还必须将应用配置为具有"远程通知"后台模式.https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW8 (2认同)

Kri*_*ett 5

接受的答案指向不推荐使用的文档。

您应该改用以下代码:Firebase文档

数据消息如下所示:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

以及通知消息:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

希望这将使其他人避免我从公认的答案中头痛。

  • @Onza True :) 但它仍然出现在谷歌搜索中,所以我猜其他人也可能会找到它。不过,我可能应该看看日期。 (2认同)