- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我阅读了实现 google gcm 的基本示例。我开发了小型客户端 android 应用程序,它成功地为我提供了来自 gcm 服务器的注册 ID。现在在服务器端我正在使用 Ruby on rails 因此我们使用这个 gem 来实现 gcm 服务器端 https://github.com/dondeng/gcm_on_rails .我将我的注册 ID 传递到我的服务器。我成功地运行了这些命令
device = Gcm::Device.create(:registration_id => "XXXXXXXXXXXXXXXXXXXXXX")
notification = Gcm::Notification.new
notification.device = device
notification.collapse_key = "updates_available"
notification.delay_while_idle = true
notification.data = {:registration_ids => ["RegistrationID"], :data => {:message_text => "Get on cloud nine"}}
notification.save
用于传递通知:
$ rake gcm:notifications:deliver
我的 rake 命令运行没有任何错误。但是在完成所有这些任务后,我的设备没有收到任何消息。我不知道后台发生了什么。如何确认已发送的消息已被设备正确接收。需要帮助...谢谢...
最佳答案
调试 GCM消息可能会很麻烦和困难。
一个可能的原因是错误API key for GCM ,必须在配置文件中定义。如果您使用了错误的 API key ,那么您可能会从服务器 {:code=>200, :message=>nil}
获得成功响应,尽管尚未发送任何消息。在这种情况下,转到 Google API Console并查找正确的 key 。
另一个可能的原因是设备的 REGISTRATION_ID
错误。如果 REGISTRATION_ID 不正确,您可能会收到 NotRegistered 或 InvalidRegistration 错误,gcm_on_rails 插件(目前)并不总能识别该错误。使用以下 curl 命令通过控制台调试 API(插入您的 API_KEY 和设备的 REGISTRATION_ID
)。
curl --header "Authorization: key=API_KEY" \
--header Content-Type:"application/json" \
https://android.googleapis.com/gcm/send \
-d "{\"registration_ids\":[\"REGISTRATION_ID\"],
\"data\":{\"message_text\":\"Test, Test\"}}"
调用 Gcm API 的成功/失败尝试应该如下所示:
{"multicast_id":7961..,"success":1,"failure":0,"canonical_ids":1,
"results":[{"registration_id":"..","message_id":"0:.."}]}
{"multicast_id":7961..,"success":0,"failure":1,"canonical_ids":0,
"results":[{"error":"NotRegistered"}]}
最后还有一个原因是当天的无效键:不要使用像message_type
这样的保留字作为数据散列中的键。它将返回状态代码 200,但不会发送任何通知。 message_type
是 advanced options 之一(我花了一个多小时才弄明白)。
关于Android Gcm 不适用于 ROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12246514/
我是一名优秀的程序员,十分优秀!