Отличается ли использование функций Firestore Cloud от использования активных слушателей в приложении? - PullRequest
0 голосов
/ 01 апреля 2020

Я уже несколько недель пытаюсь получить ответ на свой вопрос без всякой удачи.

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

Мне сказали использовать либо активных слушателей или облачные функции.

На видео ниже показан разработчик, использующий облачные функции Firebase для изменения текста в реальном времени в приложении.

https://www.youtube.com/watch?v=Z87OZtIYC_0

Чем это отличается от активных слушателей, которые также делают то же самое?

Объективно говоря, что больше подходит для моего варианта использования?

1 Ответ

0 голосов
/ 02 апреля 2020

Чтобы выполнить функцию в полночь, чтобы сначала изменить пользовательский интерфейс, необходимо, чтобы приложение было открыто. Если приложение даже не открыто, то нет интерфейса для обновления. Следовательно, не имеет смысла задавать серверу эту функцию, поскольку приложение может даже не быть открытым. В любом случае, задача обновления пользовательского интерфейса должна лежать на клиенте.

Поэтому создайте таймер на клиенте (в вашем приложении), который будет выполнять вызов каждую полночь для получения данных с сервера, который заполняет этикетки. Вам нужно создать объект Timer, который срабатывает за n секунд до полуночи с интервалом в 1 день, который повторяется бесконечно. Это может выглядеть примерно так:

var midnightTimer: Timer?

midnightTimer = Timer(fire: Date().addingTimeInterval(secondsToMidnight), interval: oneDayInSeconds, repeats: true) { (timer) in
    self.updateLabels()
}

RunLoop.main.add(midnightTimer!, forMode: .common)
...