В этом уроке мы создадим Jabber-клиент для iOS. Приложение, разработанное в этой серии, позволит пользователям входить в систему, добавлять друзей и отправлять сообщения. В процессе создания этого приложения мы опишем, как установить и настроить Jabber-сервер, создать учетные записи и взаимодействовать с сервером из приложения iOS. Для моделирования среды чата мы создадим сценарий с двумя пользователями: один пользователь будет общаться в чате из приложения для iPhone, а другой будет использовать iChat.
Что такое Джаббер?
Jabber — это не инструмент, а сообщество, которое создает и поддерживает XMPP. XMPP расшифровывается как расширяемый протокол обмена сообщениями и присутствия. Такой протокол является открытым стандартом и ориентирован на обмен сообщениями. Первоначальное название протокола было Jabber, поэтому термины часто используются взаимозаменяемо. Обмен сообщениями происходит практически в реальном времени, поэтому это идеальная инфраструктура для создания приложений, похожих на чаты. Протокол также реализует механизм уведомления о присутствии (независимо от того, находится ли пользователь в сети или нет) и ведения списка контактов. XMPP — это тщательный протокол, который был принят крупными компаниями, такими как Google, для создания своих служб мгновенных сообщений.
Как это работает?
Протокол XMPP основан на XML (расширяемый язык разметки), поэтому каждый тип сообщения (например, логин, отправка сообщения и т. Д.) Кодируется в этом формате. Например, предположим, что президент Обама посылает сообщение Хиллари. Формат сообщения будет примерно таким:
<message type = "chat" from = "[email protected]" to = "[email protected]"> <body> Привет </ body> </ Сообщение>
Для полноты картины следует упомянуть, что XMPP является децентрализованным сервисом, очень похожим на электронную почту. Это означает, что учетные записи Хиллари и Обамы могут находиться на разных серверах (например, [email protected] и [email protected]). В любом случае сообщение доставляется, потому что XMPP обеспечивает связь между серверами. В случае, если Хиллари находится в автономном режиме, сообщение кэшируется на сервере и доставляется, когда она выходит в сеть. Чтобы упростить задачу и сосредоточиться на стороне клиента, в этом руководстве мы рассмотрим сценарий с одним сервером.
Установка Jabber
Существует много реализаций серверов Jabber. Довольно полный список доступен здесь: XMPP. В этом уроке мы будем использовать для его простоты в установке и настройке. Ejabbered разработан в Erlang, является открытым исходным кодом и может работать во многих операционных системах, включая Mac OS X. Выбор такой реализации также обусловлен простым веб-интерфейсом, который позволяет быстро настроить сервис и управлять учетными записями пользователей. Ejabbered доступен бесплатно Вот. Мы выбираем версию для Mac OS X и начинаем загрузку. В этом уроке мы будем использовать версию 2.1.8.
Процесс установки очень прост и интуитивно понятен. Фактически, загруженный файл — это приложение, которое помогает нам в процессе установки с помощью мастера. После этого у нас должна быть папка с именем ‘ejabbered-2.1.8’ в нашем каталоге ‘Applications’. Папка должна содержать следующие подпапки.
Самые важные папки — это conf и bin. Первый содержит файлы конфигурации для управления привилегиями пользователей. Второй включает команды для управления сервером. Давайте откроем терминал и перейдем в папку bin. Мы должны увидеть что-то вроде этого.
Наиболее важными командами являются «запуск» и «остановка». Если они не исполняемые, вы можете сделать это, выполнив следующую команду оболочки:
chmod 755 stop
chmod 755 start
В папке также находится скрипт postinstall.sh, который необходимо запустить сразу после установки, чтобы создать пользователя с правами администратора. Скрипт ожидает три параметра: пользователь, домен и пароль. Таким образом, мы можем запустить это так:
./postinstall.sh cesare jerry.local пароль
Мы выбрали jerry.local, имя локальной машины, в качестве домена, но «localhost» также будет работать. Это запускает сервер и добавляет этого пользователя в качестве администратора. Чтобы дважды проверить правильность конфигурации, мы можем открыть файл ‘ejabberd.cfg’ в папке ‘con’. В разделе Список контроля доступа он должен содержать следующее
заявление
{acl, admin, {user, "cesare", "jerry.local"}}.
Теперь вы сможете запустить Jabber-сервер, набрав
./Начало
По умолчанию откроется веб-страница, которая уведомит вас о том, что сервер запущен.
Настройка пользователей Jabber
На данный момент в нашем сервисе есть только администраторы. Нам нужно заполнить его хотя бы одним пользователем. Предыдущая веб-страница содержит ссылку на интерфейс администратора, которая доступна по адресу http: // localhost: 5280 / admin /. После того, как вы вошли в систему как администратор, вы должны увидеть консоль, подобную следующей
Мы нажимаем на элемент «Списки контроля доступа», и появляется список зарегистрированных пользователей. Мы создаем нового пользователя с именем ‘alterego’, введя его данные и нажав кнопку Отправить.
Тестирование сервера
Теперь мы можем протестировать сервер и убедиться, что он работает правильно. Чтобы проверить это, мы можем запустить два настольных приложения, которые поддерживают протокол XMPP. Одним из них является iChat, который поставляется с Mac OS X. Вы можете найти другой, тот, который подходит вам лучше, из этого списка:
http://xmpp.org/xmpp-software/clients/.
В нашем случае мы будем использовать Adium, который доступен Вот. Мы настроим учетную запись для «cesare» в iChat, а другую — для «altergo» в Adium. Давайте начнем с iChat. Запустите приложение, откройте меню «Настройки» и выберите вкладку «Аккаунты».
Кнопки «+» позволяют добавить новую учетную запись, которую мы заполняем следующими данными:
Первое соединение может занять некоторое время (например, 30 секунд). iChat, вероятно, попросит вас принять неизвестный сертификат, связанный с сервером. Просто нажмите продолжить.
После подключения вы можете изменить свой статус с помощью раскрывающегося меню в верхней части окна. Давайте установим это онлайн. Теперь давайте перейдем к Adium. Запускаем приложение и открываем меню «Настройки». Добавление новой учетной записи очень похоже на iChat. Здесь мы вводим детали ‘alterego’.
В этом случае мы также должны указать сервер, на котором работает jabber. Мы выбираем вкладку «Параметры» и заполняем ее следующим образом:
Adium также попросит вас принять сертификат. Теперь у нас есть два пользователя, подключенные к серверу с помощью двух разных приложений. Это также должно быть отражено в файле журнала ejabbered. Файл находится по адресу: ‘/Applications/ejabberd-2.1.8/logs/ejabberd.log’ и должен содержать следующие сообщения
Беседа о дружбе. Хотя оба пользователя подключены к серверу, им не разрешается общаться в чате, если они не добавили друг друга в друзья. Сценарий будет следующим: Чезаре добавляет alterego в свой список. В окне iChat мы нажимаем кнопку «+» внизу.
и мы вводим идентификатор jabber ‘[email protected]’
На Adium мы должны получить запрос на авторизацию следующим образом
Как только alterego примет его, мы должны в итоге, как показано на следующем рисунке, cesare дружить с altergo (и наоборот), и оба могут обмениваться сообщениями.
Мы проверили все функции, необходимые для сервера:
- авторизоваться
- создание списка друзей
- обмен сообщениями
Это необходимо для того, чтобы возможные ошибки в приложении iOS не были связаны с неправильной настройкой сервера. Теперь мы готовы приступить к разработке приложения для iOS.
Исходный код
Полный исходный код этого проекта можно найти на GitHub здесь .