bugfix> android > 投稿

Firestore(Firebaseから)を使用し、成功せずにキャッシュの使用を無効にしようとしました。

これが私の問題です。デバイスをインターネットから切断し、これを実行すると...

getFireStoreInstance()
    .collection(PATH)
    .document(myObject.id)
    .set(myObject)
    .addOnCompleteListener( ... )

またはこれ...

getFireStoreInstance()
    .collection(PATH)
    .batch()
    .update(...)
    .commit()

...何も起こりません(インターネットに接続していないので良いです)。ただし、デバイスをインターネットに再接続するとすぐに、 completionListener アクションが完了したことを通知するために呼び出されます。

私が望むのは、デバイスがインターネットにアクセスできない場合、アクションが失敗し、 completionListener 失敗して呼び出されます。それは可能ですか?

もちろん、私は次のコードを試しました(からFirestore doc)しかし、書き込みには効果がないように見えます(ただし、読み取りには効果があります)。

val settings = FirebaseFirestoreSettings.Builder()
        .setPersistenceEnabled(false)
        .build()
FirebaseFirestore.getInstance().firestoreSettings = settings

前もって感謝します

回答 1 件
  • リスナーは、ネットワーク接続が原因で失敗することはありません。その動作を変更することはできません。彼らは常に静かに再試行します。このような回復力のあるSDKを使用することの全体的な目的は、ネットワーク接続が不安定な場合にアプリの混乱を防ぐことです。これは、モバイルアプリで多く発生します。

    接続の不足が原因で何かが失敗する必要がある場合は、Cloud FunctionsでHTTP(または呼び出し可能)エンドポイントを作成し、それを直接呼び出します。 HTTPソケットが接続できない場合、呼び出しは失敗します。

あなたの答え