Firebase продолжает работать - PullRequest
0 голосов
/ 16 января 2020

Работая с Firebase в проекте Unity, для простого рекорда я наткнулся на проблемы при выполнении запроса. В редакторе все работает как брелок (в редакторе нет постоянства) На устройствах (с включенным постоянством) начинаются проблемы. Запрос показывает кэшированные данные Firebase, поэтому он корректен только при первом вызове в клиенте, а затем, когда Firebase считает, что он подходит для синхронизации c (возможно, никогда, поскольку отсутствует обработчик событий)

Однако, В поисках решения нет способа принудительно обновить кэшированные значения. Затем я проверил KeepSynced (true) для запроса, и это, кажется, работает:

this.HiscoreQuery = hiscoreref.OrderByChild ("Score").LimitToLast (20);
this.HiscoreQuery.KeepSynced(true);
this.HiscoreQuery.GetValueAsync().ContinueWith (task => {
  if (task.IsFaulted) {
    Debug.LogError ("Get hiscores faulted");
    return;
  }
  if (task.Result != null && task.Result.ChildrenCount > 0) {
    Debug.Log ("Get hiscore data success!");
    this.AddDelayedUpdateAction (() => this.OnGetHiScores (task.Result));
  }
});

Вопрос: Хотя это может быть хорошо, если Firebase прослушивает только запрос LImitToLast (20), это было бы очень Плохо, если Firebase внутренне хранит весь (растущий) свой исторический список, скопированный на каждом клиенте.

Кто-нибудь знает, ограничено ли KeepSynced(true) фактической областью запроса или целым деревом / ветвью? И как можно это проверить?

1 Ответ

2 голосов
/ 17 января 2020

GetValue вызовы плохо работают с KeepSynced(true). Firebase охотно возвращает вам значение из кэша и только затем загружает данные с сервера.

Более подробное объяснение см. В моем ответе здесь: Автономные возможности Firebase и addListenerForSingleValueEvent

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...