2013-03-25 79 views
0

我遵循Android文檔提供的演示客戶端/服務器教程(http://developer.android.com/google/gcm/demo.html)。當我第一次嘗試它時,所有的工作都和廣告一樣。該servlet首先提出了「沒有設備註冊!」屏幕上,然後在我的設備上啓動演示應用程序,我可以將演示消息發送到設備上。GCM演示不會接受服務器和應用程序重啓的消息

然後關閉我的Tomcat服務器,該服務器部署了gcm-demo war並關閉了我設備上的演示客戶端應用程序(這不是模擬器,Nexus 7)。我啓動了tomcat服務器備份,我發現它按照預期部署了gcm-demo war,但是當我轉到servlet的URL(最初說「沒有設備註冊!」)時,它現在說沒有設備註冊。我在我的設備上打開了應用程序,它表示該設備已在服務器上註冊。爲什麼servlet沒有看到我註冊的設備?

我很感激任何幫助,謝謝。

回答

3

我自己並沒有採用Tomcat/servlet方法,而是選擇了Apache/PHP/MySQL方式,所以我沒有直接經驗,但是閱讀了我在服務器數據存儲中看到的示例代碼。 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。

1

@NickT是對的。如果你想要永久存儲regIds,你可以使用java.util.Properties來備份,將數據存儲到一個屬性文件中或者自己編寫一個簡單的文件存儲。

通過刪除緩存或重新安裝應用程序來重置您的客戶端應用程序的狀態。