GCM演示不接受服务器上的消息。 app重启

时间:2013-03-25 07:29:24

标签: android tomcat servlets google-cloud-messaging

我按照Android文档提供的演示客户端/服务器教程(http://developer.android.com/google/gcm/demo.html)。当我第一次尝试时,一切都与宣传的一模一样。 servlet首先提出“没有设备注册!”屏幕,然后在我的设备上启动演示应用程序,我能够将演示消息发送到设备就好了。

然后我关闭了部署gcm-demo war的Tomcat服务器并关闭了我的设备上的demo客户端应用程序(不是模拟器,Nexus 7)。我启动了tomcat服务器备份,我看到它确实按预期部署了gcm-demo war但是当我转到servlet的URL(最初说“没有设备注册!”)时,它现在说没有设备是注册。我打开了我的设备上的应用程序,它说该设备已在服务器上注册。为什么servlet没有看到我注册的设备?

感谢您的帮助,谢谢。

2 个答案:

答案 0 :(得分:3)

我自己没有采用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时,它会忘记你的注册。

答案 1 :(得分:1)

@NickT是对的。如果您想要regIds的持久存储,可以使用java.util.Properties备份它,该{{1}}将数据存储到属性文件中或自己编写一个简单的文件存储。

通过删除缓存或重新安装应用来重置客户端应用的状态。