Использование XMPP для отправки информации в реальном времени в приложение iOS

Я разрабатываю приложение для iOS. В приложении есть разные "области", и пользователи могут публиковать "вещи". Другие пользователи, наблюдающие за той же областью, должны отправить сообщение на свой телефон (но только если приложение запущено).

Я начал работу над Джанго бэкэнд с RESTful API. Я планирую разместить бэкэнд на Amazon Web Services, и каждый раз, когда что-то добавляется в "область", помещая время обновления и "область" в очередь, используя Amazon Простая Служба Очередей. Я собираюсь сделать приложение Python, которое обрабатывает элементы в очереди, запрашивая базу данных, чтобы узнать, у каких пользователей есть новые "вещи", которые они могут загрузить - в настоящее время эта часть планируется отправить Apple Push-Уведомление к телефону, и если приложение работает, он может сделать простой RESTful запрос, чтобы получить новые данные в формате JSON.

однако я верю XMPP было бы лучшим решением (используя XMPPFramework на стороне iOS), и позволит поддерживать Android в будущем.


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

этот проект требует использования XMPP исключительно для отправки информации с сервера на пользовательское устройство. Таким образом, это должна быть частная сеть XMPP, при необходимости пользователи могут быть зарегистрированы для учетной записи XMPP в этой частной сети (но за кулисами они не должны знать, какая технология питает приложение.)


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

Спасибо за помощь заранее:)

1 ответов


Да, это возможно. Более того, можно отправить и получить все, что вы хотите через XMPP.

обычно XMPP используется для учетных записей Jabber chat. Это кое-что значит.

  1. каждый пользователь должен быть настроен как пользователь на сервере. Это делается для того, чтобы сервер знал, на какие клиенты отправлять сообщения. Его не трудно просто настроить случайный пользователь / проход и связать его непосредственно с приложением.

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

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

Что вам нужно, чтобы начать работу, это сервер XMPP. Вы можете установить это на своем веб-сервере (я предполагаю, что вы можете установить его на AWS, но я не уверен). Это сервер, который я всегда использую,открытый огонь, его очень просто настроить и использовать (и имеет приятный веб-интерфейс, который вы можете использовать, чтобы установить все вверх). Это позволяет отправлять получать сообщения, и делает все это "частный." Это означает, что, хотя вы потенциально можете подключиться к общедоступным сетям jabber, вы также можете ограничить доступ к серверу.

Далее вам нужен веб-api. Существует хороший фреймворк php,xmpphp что поможет вам настроить api. Этот api позволит вам отправлять сообщения из вашего скрипта python (например, post req to curl) на сервер xmpp, который доставит его на iphone. Если вы не хотите отправлять сообщения, тогда все готово. Слушать Сообщения XMPP с использованием php-это совсем другой чайник рыбы!

еще одна вещь, чтобы иметь в виду, что вам нужно будет отправить статусы из приложения, так что сервер знает, если вы вошли в систему и "прослушивания" или нет. Опять же, все это достаточно хорошо документировано в интернете, если вы ищете его (я не могу точно вспомнить точные входы и выходы). Таким образом, в вашем скрипте python/php вы можете проверить, является ли пользователь, которому вы пытаетесь отправить сообщение, в настоящее время "вошел в систему" и" слушает " как это были. Если их нет, вам нужно будет реализовать push-уведомления и отправить push-уведомление. Если вы не уверены в этом, есть фантастический сервис под названием городского дирижабль который я буду рекомендовать. Они отправляют до 1 000 000 push-уведомлений в месяц бесплатно (и последующие уведомления довольно разумны). В противном случае будьте готовы к боли настройке сервиса сами! (Я слышал!)

Я надеюсь, что ответил на большинство ваших вопросов. Его довольно специализированный предмет (многие люди не будут знать о XMPP - это одна из тех вещей, о которых вы будете знать, только если вам нужно знать об этом). XMPP очень мощный, хотя и гораздо лучшее решение, чем повторение http-запросов и всех видов. В интернете довольно много информации, если вы можете ее найти, но вам, возможно, придется быть немного умным о том, как интерпретировать информацию, это одна из тех вещей, которые еще не перешли на iPhone в мейнстриме (в моем мнение.)

правка... еще одно

остерегайтесь отсева - интернет отсева и тому подобное. Это звучит очевидно, но меня всегда кусает! Всегда забывайте, что иногда интернет отключается, и мои соединения XMPP должны быть повторно подключены. Особенно если люди положить приложение в фоновом режиме, а затем вернуться к нему позже. :) Не забудьте подключиться, когда вам нужно.