2017-09-22 13 views
0

我正在構建一款Android遊戲,它需要用戶在玩的同時在線。我想檢測一下游戲在播放過程中是否中斷(互聯網連接丟失\設備關閉等),如果是這樣 - 這應該被視爲對用戶的損失,並且是寫在數據庫中。 我現在唯一想到的是將這種損失保存爲離線,並在用戶重新聯機時更新它。Firebase - 是否可以爲應用程序連接狀態設置「Cloud Listener」?


我知道我可以檢測像this應用程序連接狀態,但它並不能幫助是因爲我只能在此之後進行離線操作。我也知道我可以像this那樣在數據庫中聽寫活動,但它對我沒有幫助,因爲沒有孩子在遊戲中斷後更新。


我的問題是:是否有寫雲功能,可以收聽特定的應用程序連接狀態的方法嗎?如果沒有這種方式,我有什麼其他選擇?

回答

1

您可以使用onDisconnect()處理程序。這是您在應用程序連接時運行的一段代碼,它會在檢測到應用程序斷開連接時設置服務器運行的操作。

從文檔的一個簡單的例子:

DatabaseRef presenceRef = FirebaseDatabase.getInstance().getReference("disconnectmessage"); 
// Write a string when this client loses connection 
presenceRef.onDisconnect().setValue("I disconnected!"); 

但我建議你更多的例子閱讀完整documentation on managing presence

有了這個,您可以在onDisconnect處理程序的操作上擁有云功能觸發器,然後更新遊戲狀態。

請注意,服務器在非乾淨斷開連接的情況下檢測到丟失的連接可能需要幾分鐘的時間。

相關問題