обновить tableview, если данные изменены онлайн

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

Теперь клиент попросил создать приложение, в котором официант сможет видеть заказ на своем iPad.

Для этого у нас будет табличное представление, в котором будет отображаться весь список заказов.

Однако я не понимаю, как я обновлю таблицу / добавлю данные, если будет сделан новый заказ.

Короче говоря, после того, как заказ сделан, официант должен получить предупреждение, а вид таблицы должен быть обновлен.

Примечание. iPad / iPhone получают данные через веб-службу.


Этого можно добиться, вызывая веб-сервис каждые 1 минуту или 30 секунд.

Однако я не хочу этого делать ...

Если добавлен новый материал, веб-сервис отправит эти данные, и я добавлю эти данные в свое представление таблицы. Означает, что веб-сервис отправит мне слушателя, что добавлены новые данные

Мне нужно знать, как я могу слушать этого слушателя, если веб-сервис отправляет мне слушателя.

Любая полезная информация по этому поводу будет оценена.

Ссылка ниже помогла мне для TCP в iOS.

http://www.tekritisoftware.com/sites/default/files/Socket_Programing_for_IOS.pdf


person Fahim Parkar    schedule 09.02.2014    source источник
comment
Убедитесь, что новый заказ размещен, используя фоновый сервисный вызов на сервер. Если помещен, перезагрузите данные tableview с новыми новыми данными.   -  person Velmurugan S    schedule 09.02.2014
comment
@VelmuruganS: значит, вы говорите, что через 30 секунд я буду продолжать призывать новый заказ?   -  person Fahim Parkar    schedule 09.02.2014
comment
да, чтобы только мы могли проверять наличие новых заказов.   -  person Velmurugan S    schedule 09.02.2014
comment
@VelmuruganS: проверьте мой обновленный вопрос ... Я знаю, что мы можем сделать это, но я не хочу идти этим путем, так как задержка составляет 30 секунд или меньше;)   -  person Fahim Parkar    schedule 09.02.2014
comment
@ Fahim Parkar: длинный пул в ajax и php для установления соединения долгое время, как только сервер получит новые данные, они будут отправлены обратно клиенту. Ajax будет прослушивать этот ответ и обновлять в пользовательском интерфейсе. Я не знаю, как этого добиться в iOS. Если у вас есть решение, обновите файл ans.tk.   -  person Velmurugan S    schedule 09.02.2014
comment
@VelmuruganS: для веб-приложения ajax - лучшее решение ... Я согласен ... для iOS я ищу что-то вроде этого фундаментального ...   -  person Fahim Parkar    schedule 09.02.2014
comment
А как насчет push-уведомлений? Веб-сервис уведомляет об изменениях с помощью push, а клиент обновляет таблицу (запрашивает новые заказы) в ответ на это уведомление. См. Документы developer.apple.com/library/ios/documentation/   -  person vokilam    schedule 09.02.2014
comment
@vokilam: я где-то читал push не гарантируются. См. эту ссылку от Apple   -  person Fahim Parkar    schedule 09.02.2014
comment
Это правда, но вы можете комбинировать push-уведомления с менее частым опросом веб-службы (чтобы быть уверенным). Другой способ - сохранить открытое TCP-соединение (будет ли оно работать в фоновом режиме?).   -  person vokilam    schedule 09.02.2014
comment
@vokilam: Я планирую использовать TCP, но опасаюсь, что когда интернет-соединение разорвется, что тогда? Попытка найти образцы TCP для выполнения этой задачи ...   -  person Fahim Parkar    schedule 09.02.2014
comment
@FahimParkar, если оставить розетку открытой, может разрядить аккумулятор и обогреватель (телефон). толкать ненадежно. Я настоятельно рекомендую делать обновления каждый раз, когда официант запрашивает информацию о конкретном столе. вместо того, чтобы работать как WhatsApp (толкать), работайте как электронная почта по запросу. Использование сокета для доступа к базе данных не должно занимать слишком много времени при нормальных обстоятельствах и, вероятно, гарантирует получение самых актуальных данных.   -  person tony gil    schedule 10.02.2014


Ответы (1)


Вы можете реализовать это, используя подход клиент-сервер на основе TCP, где iPad является клиентом.

  1. Клиент iPad подключается к серверу с помощью аутентификации, чтобы вы знали, какой официант использует iPad.
  2. TCP использует дуплексную связь через сокет TCP, поэтому любая сторона может отправить сообщение другой стороне.
  3. Если серверу есть что передать iPad / клиенту / официанту, он просто отправляет это им.
  4. Если клиент хочет отправить сообщение на сервер, например «Я беру перерыв» или что-то еще, он просто отправляет его на сервер.
  5. Диапазон информации, которой вы можете поделиться между клиентом и сервером, фактически неограничен.
  6. Нет 6.

Однако для этого требуется, чтобы сервер был написан, поэтому это решение - больше, чем просто разработка для iOS. Однако веб-сервису в любом случае потребуется аналогичная разработка.

person trojanfoe    schedule 09.02.2014
comment
У меня есть система входа в систему для подключения к приложению, поэтому, используя идентификатор входа, я знаю, какой iPad является официантом ... с помощью веб-службы я могу отправлять данные, однако я хочу, чтобы iPad слушал автоматически (вместо того, чтобы писать NSURL Connect, чтобы прочитать его). .. Моя главная забота - это прослушивание данных с сервера на iPad НЕКОТОРЫМ СЛУШАТЕЛЕМ ... - person Fahim Parkar; 09.02.2014
comment
@FahimParkar Хорошо, я восстановил свой ответ. Я думаю, что он все равно немного слабоват. Все, что я предлагаю, - это использовать связь на уровне TCP, а не HTTP / JSON / XML / что-то еще. Я бы также предложил асинхронный подход. Что касается примеров, то есть масса информации о том, как использовать TCP-сокеты таким образом в Интернете, которая существует с момента запуска Интернета ... - person trojanfoe; 09.02.2014