4

私はFirebaseリアルタイムデータベースを私のアプリケーションで使用しています。それは本当にうまく動作し、私はそれにかなり満足しています。しかし、最近、私は一部のユーザーがデータを失っているため、苦境に遭遇しました。Firebaseリアルタイムデータベースの整合性のない動作がオフラインモード

シナリオ#1

インターネットに接続してアプリ(Firebase認証)へのユーザログが、データベースにいくつかのデータを追加します。

ユーザーはインターネット接続でサインアウトし、再度サインインし、以前に保存されたデータが期待通りに存在します。インターネット接続が利用可能で、データがサーバーに同期されました。

シナリオ#2

は今、ユーザーが彼/彼女のインターネット接続をオフにします。いくつかのデータをデータベースに追加し、インターネット接続がオフの場合はのアプリからログアウトします。

ユーザーは、インターネット接続を再びオンにし、上記と全く同じ方法でアプリにログインします。

今度はユーザーは、アプリケーションがオフラインモードの間に追加されたデータを表示しません。私はsetPersistenceEnabled(true)を持っており、通常の状況では完全に動作します。

問題

問題は、ユーザーがオフラインモードのときに永続化に失敗したということであるデータベースにいくつかのデータを追加します(何もインターネットが存在しないとしてサーバーに同期しない)とサインアウトオフラインモードを選択し、後で再度サインインします。

これは端的なケースですが、このバグのために貴重なデータを失ってしまったユーザーもいます。これを修正するには? Firebase Databaseのデフォルトの動作ですか?もしそうなら、これに対する回避策はありますか?

+0

これを解決する方法についてご意見がありましたら、 –

答えて

1

私のアプリでは正確に動作します。 Firebaseドキュメントhttps://firebase.google.com/docs/database/android/offline-capabilities

... から

我々のアプリがFirebase認証を使用する場合、クライアントが再起動して、ユーザーの認証トークンを持続します。アプリがオフラインのときに認証トークンが期限切れになると、クライアントは再認証するまで書き込み操作を一時停止します。そうしないと、セキュリティルールによって書き込みが失敗する可能性があります。 ..

これは、オンラインになっているときにアプリケーションからログアウトした場合、アプリケーションはログアウトする前に認証するエントリを同期しないことを意味します。

オフラインでのみログアウトするオプションはありません。

+0

はい、これは1つの解決策です。しかし、ユーザーがオフラインで、その間に大量のデータを入れてしまっても、それは完璧ではありません。今すぐ彼はすぐにインターネットをオンにし、サインアウトします。彼はFirebaseが新しい認証トークンを取得し、データをサーバに同期させるのに十分速く実行します。問題はまだ発生します。ログアウトする前に強制的にすべてのデータを同期させる方法はありますか? –

+0

私は思っていません。インターネットがオフラインの場合は、同期も認証もできません。私は同じ問題を抱えている。解決するFirebaseの次のバージョンかもしれません。 http://stackoverflow.com/questions/38281761/clear-firebase-persistence-after-logout – eurosecom

+0

私はオフラインで同期する方法がないことを知っています。インターネットが利用可能なときにすべてのデータを強制的に同期させる方法はありますか?ログアウトする前にすべてのデータの同期を強制し、インターネットも利用できるようにしてください。 –

関連する問題