我想讓我的服務器知道設備是否無法從GCM接收消息。例如,當手機關機或GCMBaseIntentService
死亡時。這可能嗎?設備無法從GCM接收消息時執行某些操作
1
A
回答
1
GCM將按照TTL中的規定保留您的信息。 GCM是一種廣播服務,這意味着您不應該知道設備是否收到了該消息。
你可以做的一件事是跟蹤你的推送消息。當應用程序啓動時,它提交最後收到的消息與服務器進行檢查。
即使設備已打開並聯機,也無法保證它會收到來自GCM的消息。
1
您可以做的一件事就是當您從應用程序註銷時,從服務器取消註冊GCM服務。這樣如果服務器將推送通知發送到設備,它將不會被設備接收。每當你再次登錄你的應用程序,你必須再次註冊你的設備到服務器。
你不能註冊&註銷通過下面的代碼你的GCM服務:
註冊:
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
GCMRegistrar.register(this, SENDER_ID);
} else {
Log.v(TAG, "Already registered");
}
registerReceiver(mHandleMessageReceiver,
new IntentFilter(DISPLAY_MESSAGE_ACTION));
註銷:
寫的OnDestroy方法如下代碼:
unregisterReceiver(mHandleMessageReceiver);
GCMRegistrar.onDestroy(this);
如果您有任何疑問,請告訴我這將非常樂意幫助你。
+0
當收到並處理消息時,將調用onDestroy方法。所以這太頻繁了。 – Klaasvaak 2012-07-31 07:35:40
相關問題
- 1. 無法在使用GCM的設備上接收消息
- 2. 無法接收來自GCM的消息
- 3. GCM:設備關閉時不會收到消息
- 4. 某些設備未收到Firebase雲消息
- 5. Android GCM某些設備未註冊
- 6. 無法接收來自設備(iPhone)的消息
- 7. 無法接收消息gcm android下面的棒棒糖
- 8. MQTT無法接收消息
- 9. 無法接收msmq消息
- 10. GCM向所有設備發送消息
- 11. 接收Android GCM消息這麼慢?
- 12. html超鏈接對某些設備無法正常工作
- 13. 無法接收GCM通知
- 14. 無法執行多個撤消操作
- 15. 僅當用戶進行某些操作時才從隊列中刪除消息
- 16. 服務器向谷歌發送的某些設備中沒有收到GCM消息?
- 17. startActivity完成後執行某些操作
- 18. 無法解釋某些logcat消息
- 19. 在服務器上成功發送GCM消息但在設備上未收到GCM消息
- 20. 僅在某些設備中獲取「無法播放此視頻」消息
- 21. 在cygwin中執行.rb-Script時,無法初始化設備PRN消息
- 22. Nodejs讀取某些進程的stdout並執行某些操作
- 23. 用戶從其他設備登錄時無法顯示消息
- 24. 如何在Unity3d中運行進程時執行某些操作
- 25. 當某個時間到來時執行一些操作
- 26. 接收GCM時出現錯誤信息
- 27. 從Azure接收雲到設備消息到esp8266
- 28. 如果數組已設置,請執行某些操作?
- 29. 當某些操作執行時,Fab應該隱藏或取消隱藏
- 30. 在完成操作後執行某些操作
感謝您的回答。我知道它擁有這些信息。但是,如果設備關閉,我希望它無法首先發送這些消息。我正在製作一個消息應用程序,只想在兩臺設備都打開時進行聊天。所以我正在使用離線/在線狀態。 – Klaasvaak 2012-07-24 11:25:20
從GCM收到推送消息時,您可以使設備回到服務器。然後你有服務器端監控ping請求的邏輯。只是一個想法。 – RobGThai 2012-07-24 11:31:32
好的。我想這是最好的解決方案。 – Klaasvaak 2012-10-08 08:51:44