Приложение Ionic / Firebase медленно устанавливает соединение, находясь в фоновом режиме - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть приложение Ionic, созданное с использованием Firebase и Angular.

У меня возникает проблема, когда пользователь возвращается в приложение после простоя и проводит пальцем вниз, чтобы обновить фид, иногдазагрузка занимает 30 секунд.

Примерно в 70% случаев обновление происходит мгновенно после возвращения в приложение, иногда я возвращаюсь через 8 часов и провожу пальцем вниз, чтобы обновить, и это буквально мгновенно.

Тем не менее, 30% времени занимает оооо долго.Может быть, 30-40 секунд.Это смехотворно долго, и нет никаких очевидных причин для этого.

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

Мой код для прокрутки вниз:

  doRefresh(refresher) {
    this.goToNew(true);
    refresher.complete();
  }

и this.goToNew():

  this.database.database.ref('/posts/'+this.feedId)
  .orderByChild('created')
  .limitToLast(10)
  .once('value', (snapshot) => {
    snapshot.forEach(child => {
        this.feedCounter.push(child.val());
        this.postFeed.push(child.val());
        this.postFeed.sort(function(a,b){
          return +new Date(b.created) - +new Date(a.created);
        });
        if(this.feedCounter.length >= 10) {
          this.firstRun = false;
        }
        return false;
    });

Я понятия не имею, что может быть причиной этой проблемы ... Любойидеи?

Спасибо!

1 Ответ

0 голосов
/ 23 января 2019

Обнаружено, что на самом деле это ошибка аутентификации Firebase.

Не удается проверить аутентификацию пользователя после возвращения из фона, поэтому мое исправление работало onAuthStateChanged только после того, как платформа ready.Мгновенное соединение с firebase!

this.platform.ready().then(() => {
    this.afAuth.auth.onAuthStateChanged((user) => {
       //code here
 });
});

Надеюсь, что это кому-нибудь поможет, поскольку это такая странная проблема.

...