我有一个问题。对于iOS,我们可以同时发送"数据"和"通知"在有效载荷中?我只收到"通知"被发送到GCM。当我添加两者时,我没有收到任何通知。我的问题是,如果我想在iOS和Android设备上获得更新,那么有效载荷应该是什么?
当前有效载荷:
{
"to":"/topics/testTopic",
"content_available":true,
"priority":"high",
"notification": {
"body":"Test Message",
"title":"test"
},
"data": {
"title": "Title.D Mixed JSON",
"body": "Content.D Mixed JSON",
"productId" : "1"
}
}
答案 0 :(得分:1)
你的有效载荷很好,没有理由你不应该得到它。但这两者之间存在一些差异。
官方文档中记录了"notification"
和"data"
之间的差异:https://developers.google.com/cloud-messaging/concept-options
当您希望GCM代表客户端应用程序显示通知时,请使用通知。当您希望应用程序处理显示或处理Android客户端应用程序上的消息时,或者如果您希望在有直接GCM连接时向iOS设备发送消息,请使用数据消息
因此,对于您要发送的混合消息,了解您的应用是在后台还是在前台非常重要:
在后台,应用程序在通知托盘中接收通知有效负载,并仅在用户点击通知时处理数据有效负载。 在前台时,您的应用会收到一个包含两个有效负载的捆绑包。
未接收推送通知的另一个原因是您尚未分配传送优先级。有两个选项normal
和high
。
高
高优先级。 GCM尝试立即提供高优先级消息,允许GCM服务在可能的情况下唤醒休眠设备并打开与应用服务器的网络连接
<强>正常强>
正常优先。这是邮件传递的默认优先级。普通优先级消息不会在睡眠设备上打开网络连接,并且可能会延迟它们的传送以节省电池
尝试在有效负载中"priority" : "high"
之前设置"notification"
。
答案 1 :(得分:1)
不允许复制“通知”和“数据”的内容,当用户点击通知时,您可以读取“通知”中的数据,以下JSON应该与您合作。
{
"to":"/topics/testTopic",
"content_available":true,
"priority":"high",
"notification": {
"body":"Test Message",
"title":"test"
},
"data": {
"productId" : "1"
}
}