私は、アプリのクラッシュの原因となる小さなバグがあることに慣れています。 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()
その後、私は、例えばFirebaseから配列をクエリが、私は、アプリのクラッシュにつながるどのようないくつかの値が間違って設定しました。 onDisconnected関数は決して実行されません。一日中待っていて、私の情報はまだリアルタイムデータベースに表示されています。このコードがサーバー側で実行されている場合、どのようにサーバーがまだ私が接続していると思うかもしれませんか?アプリを閉じて&飛行機モードをオンにすると正しく切断されます。
ここで、忍耐は美徳です。アプリケーションがクラッシュすると、Firebaseクライアントは明示的に切断を知らせる時間がありません。 'onDisconnect()'ハンドラはまだ起動しますが、数分(ソケットがタイムアウトするまでの時間)かかります。 http://stackoverflow.com/questions/30668292/firebase-when-ondisconnect-event-fire/30670928#30670928 –
忍耐力はどれくらいありますか?私はすでに私の質問で、私は一日を待っていたと言いました、それは24時間だったと私を信じてください、それはまだ消えませんでした。 –
私がリンクした答えで言ったように、それは数分かかることがあります。それより長い間は、他の何かが間違っていた可能性が高くなります。また、あなたの例では、アプリケーションを再起動すると同じ値が書き換えられることに注意してください。 –