我使用了一個導致應用程序崩潰的小錯誤。查詢來自Firebase的數據時很可能發生錯誤(是的,是我的錯)。這是當應用程序啓動將要執行的第一個函數:爲什麼當應用程序崩潰時,Firebase不支持onDisconnect?
let currentUser = FIRAuth.auth()?.currentUser?.uid
let con = self.gameRef!.childByAutoId()
self.usersKey = con.key
let values = ["username": "test", "score": 0, "userID": currentUser!] as [String : Any]
con.updateChildValues(values)
con.onDisconnectRemoveValue()
那麼這個設置後,我查詢例如從火力地堡一個數組,但我並設置一些值錯什麼導致應用程序崩潰。 onDisconnected函數從不執行。我等了一整天,我的信息仍然顯示在實時數據庫中。如果此代碼在服務器端執行,那麼服務器如何仍然認爲我已連接?打開飛行模式關閉應用&將正確斷開我的連接。
耐心在這裏是一種美德。當應用程序崩潰時,Firebase客戶端沒有時間明確指示斷開連接。你的'onDisconnect()'處理程序仍然會觸發,但是它需要幾分鐘的時間(套接字超時)。請參閱http://stackoverflow.com/questions/30668292/firebase-when-ondisconnect-event-fire/30670928#30670928 –
我應該耐心等待多久?我已經在我的問題中說過,我等了一整天,相信我是24小時,而且還沒有消失。 –
正如我在回答中所說的那樣,可能需要幾分鐘的時間。長於此,更可能是其他事情出錯了。另外請記住,在您的示例中,重新啓動應用程序將重寫相同的值。 –