gpt4 book ai didi

Android Gcm 不适用于 ROR

转载 作者:行者123 更新时间:2023-11-29 02:01:51 25 4
gpt4 key购买 nike

我阅读了实现 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 不正确,您可能会收到 NotRegisteredInvalidRegistration 错误,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_typeadvanced options 之一(我花了一个多小时才弄明白)。

关于Android Gcm 不适用于 ROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12246514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com