如何在第三方服务器上没有逻辑的情况下将Google云消息消息发送到其他设备

时间:2016-04-05 15:38:33

标签: android google-cloud-messaging

我正在尝试创建一个简单的消息传递应用程序,其中包含一个带有Android应用程序的mysql和php服务器。我的后端围绕mysql存储和php从数据库到设备进行通信,反之亦然。

现在,我要完成的是:发送设备 - > GCM->目标设备。

我的想法是我创建的数据库存储了所有用户的gcm Id。这样,当用户想要发送消息时,他们的应用程序会向我的数据库发送一条消息进行存储并检索目标gcm Id,然后将目标gcm id发送到gcm服务器以创建推送通知。当目标收到gcm消息时,它会向数据库发送响应以接收实际发送的消息。

这可能吗,我将如何做到这一点?

我已经从这里实现了gcm接收器: https://github.com/codepath/android_guides/wiki/Google-Cloud-Messaging

1 个答案:

答案 0 :(得分:0)

没有。不要这样做。

对于请求推送到设备的任何互联网连接设备(服务器或移动设备),它需要向GCM地址(https://gcm-http.googleapis.com/gcm/send)发送POST请求,并传递服务器API密钥和应该接收消息的设备GCM reg id。在设备上提供任何这些值都会对您的应用程序造成安全风险。

拥有您的注册ID,意味着人们可以轻松“复制”您的ID并开始代表您的服务器发送消息。

GCM设备注册ID,意味着任何人都可以开始为您的用户进行游戏,而您当然不希望这样。

您可以查看GCM上游(https://developers.google.com/cloud-messaging/upstream)但这只意味着您的客户端代码会更简单,因为它就像调用gcm.send(String);一样简单,但您仍需要在服务器应用程序上处理它

正确的方法是在您的服务器上放置一张表格,其中userIdgcmRegId对应,并让设备向您的服务器发送消息给所需的userId。您的服务器应处理一个设备“发送”消息并创建推送到其他设备。在您已经开发了一个完整的聊天应用程序后,该逻辑在服务器端应该相当简单。