Firebase автономная база данных - PullRequest
0 голосов
/ 26 января 2020

Мое приложение имеет каталог, который использует Firebase для хранения и обновления данных. Я хочу показать уже кэшированные данные, если приложение будет уничтожено и запущено снова, не будучи в сети.

Удаляет ли Firebase кеш при завершении работы приложения?

Можем ли мы сначала извлекать sh данные в автономном режиме независимо от того, находится ли пользователь в сети или в автономном режиме.

Ответы [ 2 ]

1 голос
/ 26 января 2020

Пока вы включаете автономный режим, данные будут кэшироваться на диск, поэтому будут доступны даже после закрытия приложения. Затем, когда вы снова прослушиваете тот же путь, данные будут извлечены, даже если пользователь был в автономном режиме.

Для базы данных реального времени (о которой я предполагаю, что вы говорите), постоянство доступно для Android и iOS. Нет постоянного сохранения в сети.

Вкл. Android:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

Вкл. iOS:

Database.database().isPersistenceEnabled = true
0 голосов
/ 29 января 2020

Согласно моему ответу в Slack Firebase Community:

setPersistenceEnabled (true) в вашей базе данных должно быть самым первым, что вы делаете перед использованием любых ссылок для вызова данных. Ваш метод fetchData () запускается до того, как вы его вызовите, поэтому настройка персистентности не удастся. Вы можете проверить успешность установки персистентности следующим образом:

bool _success = await globals.firebaseDatabase.setPersistenceEnabled(true);

Вы также должны запустить это после настройки персистентности:

_success =
        await globals.firebaseDatabase.setPersistenceCacheSizeBytes(10000000);

Создание экземпляра вашей базы данных и настройка персистентности требует сделать это как можно раньше в приложении ... так что в идеале, вернитесь в main.dart. (отредактировано)

При горячей перезагрузке bool успеха будет показывать false, но это потому, что постоянство может быть успешно установлено только один раз, и это было сделано при первоначальной загрузке приложения. (отредактировано)

Надеюсь, что это решит вашу проблему.

keepSynced (true / false) может затем использоваться для указанных c битов БД, чтобы гарантировать, что указанная c ссылка всегда актуально. Вы можете включать и выключать это, когда будете sh. keepSynced в основном просто добавляет слушателя. Если вы уже создаете прослушиватели для этих областей базы данных, вам не нужен keepSynced. (отредактировано)

пс. 'globals' в приведенном выше коде - это просто ссылка на мой файл global_config.dart.

...