質問: ### 実装したいこと Firestoreの更新をリアルタイムで受け取って表示する ### 現状出来ていること * Firestoreへのデータの読み書き ### 分からないこと * Firestoreの特定のコレクションドキュメントの更新をリアルタイムで受け取る方法 ### 備考 アプリはMVVMで実装しており,DataBindingとLiveDataを使用しています。 詳しい方,教えていただけますと幸いです
回答: 基本的なやり方はドキュメントに書かれています。 LiveDataにデータを流したいのであれば、以下のような拡張を用意しておくと便利です。kotlinx.coroutinesの機能を利用していますが、lifecycle-livedata-ktxを導入していればそのまま使えるはずです。 ``` @OptIn(ExperimentalCoroutinesApi::class) fun Query.snapshotsAsFlow(): Flow { return callbackFlow { val listener = addSnapshotListener { querySnapshot, exception -> if (exception != null) { cancel(message = "snapshot error!", cause = exception) return@addSnapshotListener } offer(querySnapshot) } awaitClose { listener.remove() } } } ``` * 使い方の例 ``` val liveData: LiveData<...> = FirebaseFirestore.getInstance() .collection("...") .snapshotsAsFlow() .map { /* 適当に加工する... */ } .asLiveData() ```