我们有一个奇怪的问题:我们使用PushSharp向 Android 设备发送通知,日志显示Notification sent
,但设备上没有收到任何通知。如果我更改注册 ID(用其他东西替换字符),我会收到“无效令牌”错误,所以我相信我的请求会发送到服务器。
我想知道是否有办法在 Google 服务器上的某处查看所有已发送(和/或排队)通知的日志,或者是否可以启用此类日志记录。
基本上 - 如何解决通知传递问题?
我们有一个奇怪的问题:我们使用PushSharp向 Android 设备发送通知,日志显示Notification sent
,但设备上没有收到任何通知。如果我更改注册 ID(用其他东西替换字符),我会收到“无效令牌”错误,所以我相信我的请求会发送到服务器。
我想知道是否有办法在 Google 服务器上的某处查看所有已发送(和/或排队)通知的日志,或者是否可以启用此类日志记录。
基本上 - 如何解决通知传递问题?
GCM 服务器会为您发送给它的每条消息返回一个响应。该消息告诉您该消息是被服务器接受还是拒绝(它不告诉您它是否实际传递到设备),并且还指定错误类型(如果有)。
PushSharp
可能会读取此响应并通知错误(例如,当您使用无效的注册 ID 时出现“无效令牌”错误)。
如果您没有看到任何错误,则问题可能出在您的客户端应用程序中(在清单中或在接收 GCM 消息的代码中)。
好吧,实际上这很棘手。根据PushSharp 文档,我使用以下代码发送通知:
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""}"));