Android的GCM不能与ROR工作(Android Gcm Not working with R

2019-09-22 02:08发布

我读谷歌实现基本GCM例子。 我公司开发的小型客户端的Android应用程序,成功地给我注册ID从GCM服务器..现在我使用Ruby on Rails服务器端,因此我们用这个宝石执行的GCM的服务器端https://github.com/dondeng/gcm_on_rails 。 我把我的注册ID到我的服务器。 我成功运行这些命令

设备= GCM :: Device.create(:registration_id => “XXXXXXXXXXXXXXXXXXXXXX”)

通知= GCM :: Notification.new

notification.device =设备

notification.collapse_key = “updates_available”

notification.delay_while_idle =真

notification.data = {:registration_ids => [ “RegistrationID”],:数据=> {:MESSAGE_TEXT => “获取关于云9”}}

notification.save

用于传送通知:

$ rake gcm:notifications:deliver

我rake命令没有任何错误运行。 但是,所有这些任务我的设备没有收到任何消息,完成后..我不知道什么背景回事。 如何确认发送消息正确的设备接收。需要帮助...谢谢你....

Answer 1:

调试GCM消息可能是麻烦和困难的。

一个可能的原因是一个错误的GCM API密钥 ,必须在配置文件中定义。 如果你使用了错误的API密钥,那么你可能会得到来自服务器的成功响应{:code=>200, :message=>nil} ,虽然没有消息已发送。 在这种情况下转到谷歌API控制台并查找正确的密钥。

另一个可能的原因是一个错误的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_type是一个高级选项 (我花了一个多小时找到了)。



Answer 2:

如果您在服务器端没有错误,也许你没有正确处理您的Android应用程序的事件。

按照此原则: http://developer.android.com/guide/google/gcm/gs.html#android-app ,写日志调试。



文章来源: Android Gcm Not working with ROR