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

时间:2016-04-11 17:46:01

标签: android ios google-cloud-messaging

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

例如,如果用户从他们的某个朋友那里收到新消息,我想发送此消息,并能够显示带声音的提醒。

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

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

这里有一些相关主题:

Silent background push on iOS and Android

Push Notifications without alert

iPhone push notification without alert

Android Silent Push

2 个答案:

答案 0 :(得分:34)

<强>机器人:

  

<强> 更新:   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有效负载,然后您会收到静默通知

那么简单

答案 1 :(得分:4)

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

您应该改用此命令: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"
    }
  }
}

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