我想讓我的服務器知道設備是否無法從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 android無法在某些設備上發送消息?
- 2. 無法在使用GCM的設備上接收消息
- 3. 無法接收來自GCM的消息
- 4. android GCM從多個設備接收消息
- 5. Android WebView無法從某些設備的鍵盤接收輸入
- 6. 無法使用GCM建立設備到設備消息傳遞
- 7. GCM消息接收訂單
- 8. GCM:設備關閉時不會收到消息
- 9. 當收到消息時,GCM沒有喚醒設備
- 10. 設備收到GCM IntentService消息時刷新ListView
- 11. 某些設備未收到Firebase雲消息
- 12. GCM不在某些設備中註冊
- 13. Android GCM某些設備未註冊
- 14. 無法接收來自設備(iPhone)的消息
- 15. Android Gcm onMessage()..在某些設備上收到「null」爲什麼?
- 16. GCM ANDROID無法發送通知/消息到Android設備
- 17. 無法通過Node.js + XMPP接收上游GCM消息
- 18. 無法接收消息gcm android下面的棒棒糖
- 19. ESelectionService無法接收消息
- 20. MQTT無法接收消息
- 21. 無法接收msmq消息
- 22. NServiceBus無法接收消息
- 23. 當用戶中止連接時執行某些操作(Sinatra + Thin)
- 24. 無法接收移動設備上的gcm通知:Android
- 25. html超鏈接對某些設備無法正常工作
- 26. GCM推送通知設備沒有收到消息
- 27. 設備未收到來自GCM的消息
- 28. 設備沒有收到來自Google GCM的消息
- 29. 設備上未收到延遲的GCM消息
- 30. GCM優先消息到設備組
感謝您的回答。我知道它擁有這些信息。但是,如果設備關閉,我希望它無法首先發送這些消息。我正在製作一個消息應用程序,只想在兩臺設備都打開時進行聊天。所以我正在使用離線/在線狀態。 – Klaasvaak 2012-07-24 11:25:20
從GCM收到推送消息時,您可以使設備回到服務器。然後你有服務器端監控ping請求的邏輯。只是一個想法。 – RobGThai 2012-07-24 11:31:32
好的。我想這是最好的解決方案。 – Klaasvaak 2012-10-08 08:51:44