Java 如何在GCM推送通知的服务器端实现上验证注册?

Java 如何在GCM推送通知的服务器端实现上验证注册?,java,android,cordova,google-cloud-messaging,phonegap-pushplugin,Java,Android,Cordova,Google Cloud Messaging,Phonegap Pushplugin,我的案例 使用phonegap的Android/iOS应用程序 使用谷歌云消息(GCM)推送通知 使用Phonegap插件接收下游通知 服务器端的Dropwizard 应用程序内容免费提供,无需在我的服务器上注册/登录 问题 目前,我在服务器端实现方面遇到了困难,因为我必须按照说明在服务器上存储注册ID(检查此行的sendRegistrationToServer(token);) 我还没有找到任何关于如何正确存储Id的文档,似乎无法从GCM网络检索这些注册Id 从我所读到的内容来看,我需要实

我的案例

  • 使用phonegap的Android/iOS应用程序
  • 使用谷歌云消息(GCM)推送通知
  • 使用Phonegap插件接收下游通知
  • 服务器端的Dropwizard
  • 应用程序内容免费提供,无需在我的服务器上注册/登录
问题

目前,我在服务器端实现方面遇到了困难,因为我必须按照说明在服务器上存储注册ID(检查此行的
sendRegistrationToServer(token);

我还没有找到任何关于如何正确存储Id的文档,似乎无法从GCM网络检索这些注册Id

从我所读到的内容来看,我需要实现将
Ids
从客户端发布到应用服务器的方式

我需要确保这些
ID
安全地存储在我的服务器应用程序中。也就是说:

  • 将注册ID发布到我的服务器应用程序的最佳做法是什么
  • 我如何知道注册新客户端
    注册ID
    的post请求是否确实来自我的服务器应用程序上的我的应用程序的客户端,因为我无法将其链接到任何类型的登录?(每个人都可以使用应用程序)以避免存储任何与我的应用程序无关的
    注册ID
    ,从而不会向未知和不需要的设备发送通知
  • 是否有关于如何使用GCM推送通知实现“真正的企业就绪应用程序服务器”的教程
  • 我的问题有意义吗?还是我的方法完全错了
  • 我能想到的最简单的方法是在服务器上设置一个HTTPS servlet来接收来自客户端的注册ID并存储它们
  • 我想没有办法确定这是你的应用程序(而且它没有经过处理),但你为什么会在意呢?在最坏的情况下,攻击者可能会向您提供一些无效的注册ID,您将在尝试发送GCM消息并收到相应错误后清除这些ID
  • HTTP服务器、HTTP客户端和数据库,用于存储用户和注册ID之间的关系;整个计划似乎并不太复杂
  • 对我来说完全有道理

  • 在进一步阅读GCM之后,我发现了您在第3点提到的内容。我看到它是为了防止和自动清理垃圾请求而设计的,因为需要
    注册ID
    ,我想如果没有人拥有我的apikey,那就没用了,是吗?@Cyberdelphos不知道你的意思,但API key是用来用GCM服务器验证你的服务器的,所以只要你保密,其他人将无法向您的客户发送GCM通知。