Когда мне нужно загружать данные уведомлений с сервера?

#ios #objective-c #swift

#iOS #цель-c #swift #objective-c

Вопрос:

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

Я не уверен — как часто я должен проверять сервер на наличие обновлений. Я подумал, что было бы неплохо проверить наличие обновлений в методе viewDidLoad моего ViewController. Но приложение может перейти в фоновый режим и после возврата через несколько дней — viewDidLoad не будет запущен. В противном случае, если я помещу его в viewWillAppear — его следует использовать чаще, чем следовало бы.

Как это должно быть сделано?

Комментарии:

1. Вы можете использовать applicationWillEnterForeground метод AppDelegate, чтобы запросить у вашего сервера обновление, когда приложение возвращается из фонового режима

2. Это не уведомления, это опрос, нет? Вы не можете использовать APNS?

Ответ №1:

Вы также можете использовать тихие push-уведомления для запуска синхронизации. Когда на устройство поступает тихое push-уведомление, пользователь ничего не знает об уведомлении. Но ваше приложение получает уведомление, и приложению будет предоставлено некоторое время для загрузки нового контента и представления его пользователю. Вы можете прочитать больше об этом здесь — https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/TheNotificationPayload.html , в разделе Настройка автоматического уведомления

Комментарии:

1. Спасибо, Ольга. Что произойдет, если пользователь не согласится использовать push-уведомления для моего приложения?

2. Разумеется, push-уведомления не будут приходить. Вы можете убедить пользователя включить их, объяснив, зачем вам нужно это разрешение и что пользователь потеряет в случае отказа. Если пользователь не согласен, вы можете, например, обновлять свой контент один раз в день (или чаще, зависит от ваших потребностей) — просто сохраните временную метку последнего обновления и сравните ее с текущей датой в viewWillAppear.