Google Cloud Messaging - 有没有办法查看所有已发送(或排队)通知的列表?

Posted

技术标签:

【中文标题】Google Cloud Messaging - 有没有办法查看所有已发送(或排队)通知的列表?【英文标题】:Google Cloud Messaging - is there a way to see list of all sent (or queued) notifications? 【发布时间】:2013-12-06 18:54:48 【问题描述】:

我们有一个奇怪的问题:我们使用PushSharp 向android 设备发送通知,日志显示Notification sent,但设备上没有收到任何通知。如果我更改注册 ID(用其他东西替换字符),我会收到“无效令牌”错误,所以我相信我的请求会发送到服务器。

我想知道是否有办法查看所有已发送(和/或排队)通知的日志Google 服务器上的某处,或者是否可以启用此类日志记录。

基本上 - 如何解决通知传递问题?

【问题讨论】:

【参考方案1】:

GCM 服务器会为您发送给它的每条消息返回一个响应。该消息告诉您该消息是被服务器接受还是拒绝(它不告诉您它是否实际传递到设备),如果有的话,还指定错误的类型。

PushSharp 可能会读取此响应并通知错误(例如您在使用无效注册 ID 时收到的“无效令牌”错误)。

如果您没有看到任何错误,则问题可能出在您的客户端应用程序中(在清单中或在接收 GCM 消息的代码中)。

【讨论】:

技术上回答了我的问题 - 但我仍然想保留自己的答案,因为对于我(GCM 的首次用户)来说,非常不清楚为什么屏幕上不显示推送通知。谢谢!【参考方案2】:

好吧,实际上这很棘手。根据PushSharp documentation,我使用以下代码发送通知:

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId("DEVICE REGISTRATION ID HERE")
                      .WithJson(@"""alert"":""Hello World!"",""badge"":7,""sound"":""sound.caf"""));

这是一个错误 :) Google 需要我分别为通知正文消息和标题使用“消息”和“标题”字段。一旦我将代码更改为以下内容,它就开始工作了:

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId("DEVICE REGISTRATION ID HERE")
                      .WithJson(@"""message"":""Hello World!"",""title"":""your app name"""));

【讨论】:

Google 不需要您使用“消息”和“标题”。编写您要向其发送通知的应用程序的人可能期望这些字段。只要客户端开发人员处理这些字段,您就可以使用任何名称和值(假设您不超过 4k)发送您希望的任何字段。

以上是关于Google Cloud Messaging - 有没有办法查看所有已发送(或排队)通知的列表?的主要内容,如果未能解决你的问题,请参考以下文章

GCM(Google Cloud Messaging)推送完全解析

Google Cloud Messaging Bridging Header 导入失败

GCM(Google Cloud Messaging)是不是需要 Google 帐户?

Google-Cloud-Messaging服务的可靠性

Google Cloud Messaging:iOS App 在后台时不会收到警报

在新的 Google Cloud Messaging 上取消注册