2017-02-16 12 views
1

Я создаю приложение для социальных приложений iOS, такое как Facebook. В настоящее время я планирую использовать push-уведомления для обновления чего-либо в приложении, если есть новые данные. Обновления, такие как значок панели вкладок, добавляющий номер, если есть новый запрос друга или сообщение. Однако, что, если пользователь отключает push-уведомления? Как пользователь получит эти обновления?Что такое эффективный способ автоматического получения обновлений из API отдыха без push-уведомлений?

Мои предлагаемые решения:

  • Для запуска таймера в фоновом режиме, что опрашивает сервер обновлений.
  • Примените некоторое нажатие для обновления функции.

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

Второй вариант заключается в том, что обновления будут доступны только тогда, когда будет выполнено обновление для обновления.

Есть ли другой способ получить обновления/новые данные эффективно, как только они будут доступны?

+0

Возможно, вы можете отправить количество уведомлений в каждом ответе от api (как дополнительная строка для каждого запроса GET). И если notificationAmount> 0, то вы можете вызвать метод, как «getNotifications» из вашего API. –

+0

Firebase имеет обмен сообщениями FCM, который работает, даже если пользователь не разрешил push-уведомления, только когда приложение находится на переднем плане и для iOS 10+. Еще один возможный подход, но я не очень хорошо знаю, как он будет работать с большими нагрузками - это протокол MQTT для реализации двунаправленной связи. –

ответ

0

Для этого вам необходимо следовать шаблону наблюдателя. Шаблоны наблюдателей работают, когда один пользователь испускает действие, а другой слушает испущенное действие и выполняет требуемое действие.

Вы можете сделать это, используя Firebase, как вы BaaS (Backend as service) https://firebase.google.com. Или Напишите свой собственный сервер socket.io, который всегда будет общаться с вашим приложением, когда приложение открыто. Таким образом, как только происходит смена базы данных, пользователь получает уведомление и обновляет данные, независимо от того, что было изменено.

Как это работает. 1 Клиент слушает сообщение - ('update') 2 База данных изменена, сервер выдает сообщение - ('update') 3 Когда клиент слушает сообщение - ('update'), вы будете уведомлены с ним и может изменять или обновлять данные, которые были изменены.

Спасибо. Не стесняйтесь задавать вопрос, если не ясно.

+0

Если клиент постоянно прослушивает сервер, он не будет постоянно использовать сетевые ресурсы постоянно? –

+0

Привет, спасибо за ваш вклад. Я планирую использовать python в качестве backend rest api, но понял, что сам бэкэнд должен быть синхронизирован с приложением.Я нашел эту ссылку об использовании любой инфраструктуры веб-backend (в этой статье django) с nodejs, используя redis, чтобы связать их для Django, чтобы иметь дело с дорогостоящими вещами и nodejs для обновлений в реальном времени. Вот ссылка: http://www.cuelogic.com/blog/how-to-use-both-django-nodejs-as-backend-for-your-application/ –

+0

Я не пробовал делать что-то вроде слияния 2 бэкэндов раньше, но я думаю, что попробую, если это единственное решение. Я просто совершенно смущен тем, как это будет работать особенно с этой проблемой redis. Не могли бы вы дать обзор статьи? –

0

Я предлагаю вам использовать Realm Mobile Platform. Это новейшая и удивительная технология, которая уменьшит ваши дополнительные усилия для логики бэкэнд, а также любой логики sync.

Для получения более подробной информации об этом вы можете ознакомиться на странице this.

И удивительная часть, это абсолютно свободный и с открытым исходным кодом.