0

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

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

我很感激任何帮助,谢谢。

4

2 回答 2

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 时,它会忘记你的 regId。

于 2013-03-25T11:02:14.950 回答
1

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

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

于 2013-03-25T11:18:32.777 回答