Чат своими руками

# Просто о разработке
Август 2017 г
SimbirSoftMobile

В этой статье мы опишем тонкости написания чата. Понимаю, что придумано уже достаточно готовых решений. Побродив по закоулкам бескрайнего, отыскали пару годных библиотек, которые предоставляют чат «из-коробки». В этой статье они перечислены не будут. Так вот, перспектива заюзать готовое решение казалась соблазнительной. Но, еще раз подумав о комплексности предстоящей задачи, мы решили писать с нуля.

Итак, задача:

Бэкенд на основе кастомного (разрабатываемого параллельно) XMPP-сервера. Поддержка множества пользователей в одном чате. Ячейки - начиная с обычных текстовых блоков, заканчивая отправкой картинок и сообщениями со множеством текстовых полей, кнопками, анимациями и меняющейся высотой по событию. Статус сообщений (доставлено, прочитано и т.д.). Отображение аватарки в ячейке, начинающей череду сообщений от конкретного пользователя. Кеширование всего и переотправка сообщений в случае ошибки. Само собой, плавность подгрузки на лоу-енд девайсах.

Задача не совсем типичная, и требования по проекту до конца не определены. Рискованно загонять себя в рамки неиспользованной ранее библиотеки. Чего, конечно, не скажешь о проверенных в бою либах вроде RxDataSources, которую мы непременно решили использовать. Случись что, в любой момент разработки она легко замещается вручную прописанной логикой по работе с ячейками. Также не обошлось без насущного «джентльменского наборчика iOS-разработчика»: RxSwift, Realm, Alamofire и Kingfisher. Их мы также подключили к проекту.

Продолжение читайте на нашем блоге на ХабраХабр.