我按照Android文档提供的演示客户端/服务器教程(http://developer.android.com/google/gcm/demo.html)。当我第一次尝试时,一切都与宣传的一模一样。 servlet首先提出“没有设备注册!”屏幕,然后在我的设备上启动演示应用程序,我能够将演示消息发送到设备就好了。
然后我关闭了部署gcm-demo war的Tomcat服务器并关闭了我的设备上的demo客户端应用程序(不是模拟器,Nexus 7)。我启动了tomcat服务器备份,我看到它确实按预期部署了gcm-demo war但是当我转到servlet的URL(最初说“没有设备注册!”)时,它现在说没有设备是注册。我打开了我的设备上的应用程序,它说该设备已在服务器上注册。为什么servlet没有看到我注册的设备?
感谢您的帮助,谢谢。
答案 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}}将数据存储到属性文件中或自己编写一个简单的文件存储。
通过删除缓存或重新安装应用来重置客户端应用的状态。