Пишу программу, бд реализована с помощью Realm. Когда приложение открывается впервые (бд пустая), то я обычным if closure проверяю, нужно ли грузить данные с сервера.
if objects.count == 0 {
// загружаем данные через Alamofire request, парсим и сохраняем их в Realm
}
Суть вопроса:
Данные на сервере обновляются хаотично (примерно раз в месяц), как реализовать обновление этих данных (скачивание данных с сервера)?
Лично у меня присутствует три идеи:
1) каждый раз в viewDidLoad() я делаю запрос на сервер, есть ли какие-то обновления, если да, то делаю уже запрос на данные, и парсю + сохраняю их
Минусы: как по мне, то такой подход увеличивает нагрузку на сервер + жрет оперативку девайса, что не гуд.
2) использовать BGTask/BGAppRefreshTask, BGProcessingTaskRequest - IOS 13 (еще полностью не прокурил его) / application(_:performFetchWithCompletionHandler:) - IOS 7 - IOS 12.
3) отправлять remote notification при обновлении бд на сервере:
https://developer.apple.com/documentation/usernoti...
Минусы:
- нашел статейку, где говорится, что если юзер убьет приложение, то handler вообще не сработает.
- непонятка с DeviceToken и Authorization.
Прошу поделиться опытом, кто как реализовывал данный вопрос, и у кого есть какие идеи, как лучше сделать.
заранее благодарю всех!
P.S. пока писал, пришел четвертый вариант - через UserDefaults, записывать туда Date, и если прошло больше 24 часа, то спрашивать у сервера, есть ли обновления (ну и соответственно писать Date, и так по кругу)