@tiger_13

Как правильно реализовать подгрузку уведомлений?

Всем привет! Пишу приложение, в котором один из ViewController'ов TabBarController'а является ViewController с UITableView, на котором отображены карточки уведомлений (разные типы уведомлений, отсортированные по датам)
Как мне правильно, в режиме реального времени, реализовать подгрузку этих уведомлений? Задача стоит в том, что даже если пользователь находится на другом ViewController'е, то приложение все равно получает уведомление, и в tabbar появляется красный кружочек возле иконки. То есть, вариант с получением данных разово в viewWillAppear на ViewController'е с уведомлениями отпадает, так как таким образом пользователь должен зайти на страницу с уведомлениями, чтобы узнать, что у него есть новые. Пуш подходит только для тех, кто согласился на рассылку. Как лучше реализовать?
Заранее благодарю за ответ
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
ivanvorobei
@ivanvorobei
iOS разработчик, канал https://t.me/sparrowcode
Вы ищите способ реализации обратной связи. Концептуально вариантов не много

  1. Long Pooling - каждый раз шлете http запрос, при наличии ивента сервер перестает держать его и отвечает данными. Не видел проектов на этом, но на стороне бэкенда частенько.
  2. Пуши - запрашиваемое разрешение относится именно к отображению пушей. Даже без запаса разрешения вы будете их получать, пока приложение открыто. Хороший вариант для обратной связи.
  3. Вебсокеты - своего рода флагман, под узкие нужды. Прямая связь сервер-клиент, требуется установить стабильное соединение. Большинство месенджеров используют эту технологию.


На стороне клиента вам доступны глобальные нотификации, обсерверы базы данных, прямой рефреш по тригеру.

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

P.S. Вариант слать запрос раз в N секунд не предлагаю, потому что считаю это извращением.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы