我遵循了 Android 文档提供的演示客户端/服务器教程 (http://developer.android.com/google/gcm/demo.html)。当我第一次尝试时,一切都完全按照广告宣传的那样工作。 servlet 首先出现“没有设备注册!”屏幕,然后在我的设备上启动演示应用程序,我能够很好地将演示消息发送到设备。
然后我关闭部署了 gcm-demo war 的 Tomcat 服务器,并关闭了我的设备(不是模拟器,Nexus 7)上的演示客户端应用程序。我启动了 tomcat 服务器备份,我看到它确实按预期部署了 gcm-demo war 但是当我转到 servlet 的 URL(最初说“没有设备注册!”)时它现在说没有设备挂号的。我在我的设备上打开应用程序,它说该设备已经在服务器上注册。为什么 servlet 看不到我已注册的设备?
感谢任何帮助,谢谢。
最佳答案
我自己并没有采用 Tomcat/servlet 方法,而是选择了 Apache/PHP/MySQL 方法,所以我没有直接经验,但是阅读了我在服务器的 Datastore.java 中看到的示例代码,这个:
/**
* Simple implementation of a data store using standard Java collections.
* <p>
* This class is thread-safe but not persistent (it will lost the data when the
* app is restarted) - it is meant just as an example.
*/
所以基本上,当您重新启动 Tomcat 时,它忘记了您的 regId。
关于android - GCM 演示不会在服务器和应用重启时接受消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15609731/