【发布时间】:2016-08-22 16:02:29
【问题描述】:
对于如何使用 PushSharp 构建 GCM 推送通知的消息正文,我有些困惑。 GitHub 存储库中的文档和测试文件显示了消息结构,如下所示:
broker.QueueNotification (new GcmNotification {
RegistrationIds = new List<string> {
regId
},
Data = JObject.Parse ("{ \"somekey\" : \"somevalue\" }")
});
我一直在使用 Postman 进行测试,其中我以以下 JSON 格式向https://gcm-http.googleapis.com/gcm/send 发送消息。
{
"to": "000-0000-mytoken-foo",
"notification" : {
"title" : "Push Test Notification",
"body" : "GCM Test Push",
"icon" : "icon",
"color" : "#FF4081"
}
}
消息的'to' 和'notification' 部分是否已由框架处理?根据我看到的示例,似乎我只需要输入通知对象的键:值对,但我似乎无法找到说明的位置或文档中实际消息的示例。我正在使用 PushSharp 的最新版本 (4.x)。
【问题讨论】:
-
你知道它是如何设置的吗?我收到了成功消息,但 Android 上没有收到通知
-
@pechar 是的,您可能想要发送通知而不是数据消息。将
Data = JObject.Parse更改为Notification = JObject.Parse。稍后我将通过示例发布更充实的答案。 -
感谢您的回复。我实际上设法让它在晚上运行。我还是使用了
Data属性,因为Android 应用程序使用那里传递的数据处理通知。但是我想这一切都取决于您的应用程序如何处理通知。to也可以在GcmNotification的单独属性中分配,方法与notification相同 -
@pechar 你知道如何从 Push Sharp 请求令牌刷新吗?
-
我不确定我是否理解您的意思,但通常需要在设备上进行令牌刷新。然后将新令牌发送到您的服务器。有一个异常可以捕获
OnNotificationFailed,您可以在其中检查异常参数,如果它是DeviceSubscriptionExpiredException,那么您可以获得OldSubscriptionId和NewSubscriptionId。然后,您可以将数据库中的旧 ID 替换为新 ID。这里的订阅 ID 是令牌。