2015-11-17 11 views
7

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

Благодаря

+0

Вы должны помнить, что UBER использует 2 приложения. Один общественный и один для водителя. Я не знаю точно, как они выполняют синхронизацию, но я бы пошел на Driver App -> update position to server -> server send silent push с информацией в зарегистрированное общедоступное приложение рядом с местоположением. – KIDdAe

ответ

6

Нажмите

  • Использование sockets, когда приложение работает. Это даст вам немедленные обновления.
  • Используйте приложение Push notifications, когда приложение не работает (используйте уведомления для критических изменений) и игнорируйте эти уведомления, когда приложение уже запущено, в пользу сокетов.

Прицепные

  • Используйте NSURLSession, чтобы обновить локальную БД с некоторой регулярностью. Это очень устойчиво к сбою сети.

Использование комбинации подходов, так как скорость и надежность являются взаимоисключающими. В конечном счете, ваша цель - поддерживать локальную БД в синхронизации с БД вашего сервера и запускать внутренние сообщения при изменении данных. Небольшая задача, следовательно, Firebase answer.

+0

Мне очень нравится ваш подход и вы хотите построить нечто похожее, но не для такси. Что вы подразумеваете под «локальной БД»? Вы имеете в виду использование чего-то вроде CloudKit? –

+1

Больше похоже на https://www.couchbase.com/, предназначенный для синхронизации клиента и сервера. _Couchbase Server 4.5 позволяет создавать мобильные приложения, обеспечивающие отличный пользовательский интерфейс, путем доступа к локальной встроенной базе данных, которая автоматически синхронизируется с облаком. – SwiftArchitect

0

Самый простой способ заключается в работе с Firebase. Нет базы данных sql, и у вас будет мгновенное обновление при изменении чего-либо.

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

Задать мне любую помощь, которая вам нужна в отношении Firebase.

+0

Я думаю, что вопрос в том, как Firebase уведомит устройства – SwiftArchitect

+0

Ответ заключается в том, как работает XMPP (SOCKETS). Я просто покажу вам легкий способ Firebase. –

0

Я предлагаю вам взглянуть на CloudKit. Существует несколько причин.

  1. Если вы решили просто построить одно приложение и как-то драйвера функциональность, которая отличается от пользователей (возможно, при наличии драйверов регистра и входа в), то приложение может опубликовать общие данные в общественной онлайновой базы данных доступный для всех пользователей. Вы можете использовать информацию в этом сценарии для отправки местных уведомлений по мере необходимости.
  2. Как IOS обновления вы не будете зависеть от сторонних библиотек
  3. Если вы решили создать приложение водителя и отдельное приложение пользователя, CloudKit позволит обмениваться данными через эти приложения.
  4. Apple имеет дело с безопасностью и доступностью.
  5. В целом процесс очень прост в реализации.
  6. Вы можете объединить локальные уведомления с общедоступной базой данных в напоминания о расписании, оповестить пользователей и т. Д.
  7. CloudKit, когда все будет сделано правильно, будет по существу бесплатным. Просто переведите CKAssets вместо необработанных данных и ваши лимиты переноса/хранения станут незначительными.
  8. Вы также можете получить доступ к базам данных CloudKit из внешних веб-сайтов услуг/веб-сайтов, если вы хотите расширить данные дальше.
  9. Вы можете использовать подписки CloudKit для синхронизации пользовательской информации автоматически

NB - Как было отмечено в комментариях это новая технология. Это в второе поколение, и я предпочитаю его, потому что, если он использует его творчески , тогда вы можете имитировать поведение внешнего уведомления о push вместе с поддержкой фона. CloudKit устраняет необходимость в стороннем веб-сервере, с которого можно нажать внешние уведомления (так как реальные уведомления происходят путем записи в общую базу данных).

Ознакомьтесь с моим detailed answer on SO для обмена данными между приложениями с CloudKit. Вот ссылка на какой-то CloudKit videos, который далее описывает, как работает CloudKit. Apple имеет множество documentation и sampleprojects. Вы можете просмотреть веб-сайт разработчика для more info on CloudKit.

CloudKit Quick Start

+0

Я бы согласился с CloudKit (но можно утверждать, что я заинтересовался, так как я разместил свой собственный ответ), но я чувствую, что если он такой же отзывчивый, как iCloud, это ничего, кроме надежного. Пожалуйста, докажите, что я неправ. – SwiftArchitect

0

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

Смежные вопросы