Номинируйте кейсы на Workspace Digital Awards 2026. Прием заявок до 15 декабря по льготной цене, успейте принять участие!
Софториум
Разработали новое решение на Kotlin Multiplatform, интегрировали чаты в приложение для нетворкинга
Софториум
#Приложение под ключ

Разработали новое решение на Kotlin Multiplatform, интегрировали чаты в приложение для нетворкинга

102 
Софториум Россия, Кемерово
Поделиться: 0 0 0
Разработали новое решение на Kotlin Multiplatform, интегрировали чаты в приложение для нетворкинга
Клиент

ИП Юшков

Сфера

Маркетинг, дизайн, реклама

Регион

Россия, Москва

Мобильная платформа

iOS, Android

Сдано

Октябрь 2024

Задача

Мы получили заказ на разработку инновационного решения для нетворкинга. Приложение должно использовать геолокацию для поиска потенциальных контактов на мероприятиях. Дополнительная функция — встроенный чат для мгновенной связи с найденными контактами. О нем мы сегодня и расскажем.

Решение

Технический стек

В приложении были использованы следующие технологии:

Фронт

Ktor – библиотека, которая реализует сетевой стек (HTTP, WebSocket) для платформ с поддержкой плагинов для расширения функциональности.

Kotlin Multiplatform – фреймворк, который позволяет использовать общую кодовую базу для бизнес-логики приложений разных платформ.

SwiftUI – фреймворк для создания пользовательского интерфейса на iOS.

Jetpack Compose — UI-фреймворк, изначально предназначенный для Android, но позже реализованный и для других платформ.

Koin – библиотека для инъекции зависимостей, простая и лаконичная. Отличный выбор для быстрого старта.

Бэк

.NET 7

Docker

RabbitMQ

Kubernetes

WebSocket

Elasticsearch

PostgreSQL

MongoDB

1Разработка

Провели оценку с проектированием и стартовали

Перенесли все задачи в YouTrack. Собрали команду из четырех разработчиков: один — бэкенд, два — «Андроид» и один — iOS.

Обеспечили постоянное соединение между сервером и приложением

Для этого использовали протокол WebSocket.

Через TCP handshake он устанавливает нужное нам постоянное и двустороннее соединение между сервером и приложением. И позволяет получать сообщения ровно тогда, когда вам их отправили.

А ещё с ним клиент периодически пингует сервер, чтобы проверить соединение. Сервер отвечает — понг, а если нет — соединение закрывается.

Разработали подключение к сокетам и реализовали сокет-методы

Искали инструмент для ведения документации по сокет-методам, выбирали между Swagger или Postman. Swagger — хорошая штука для документирования и тестирования API, но в ней нельзя тестировать сокеты. Постман удобен для тестирования и API и сокетов, но документацию вести сложно. Поэтому тестировали в Постмане, а документацию вели в Google Docs.

Разработали решение для пагинации сообщений

Пагинация — функция, которая позволяет приложению загружать только необходимый объем данных. Это гораздо быстрее, чем ждать открытия всего контента — особенно в условиях медленного интернет-соединения.

Всё приложение написано на Kotlin Multiplatform. Но оказалось, что этот фреймворк не поддерживает пагинацию сообщений.

Разработали решение с нуля, причем оно стало мультиплатформенным, то есть работает на «Андроид» и iOS.

Избавили приложение от внеплановых перезапусков

Трудности возникли при работе с системой навигации в Jetpack Compose Configuration. Например, когда пользователь открывал чат из списка контактов или нажимал на пуш, приложение перезагружалось.

Чтобы это поправить, отказались от автоматической обработки и переписали навигацию вручную. Каждую ситуацию программно реализовывали и досконально тестили.

Отладили пуши

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

Чтобы решить эту проблему, отправляли на сервер сразу два сигнала — идентификатор пользователя и флажок. Последний дополнительно уточнял для бекэнда, нужно ли в этом случае отправлять пуш-уведомление.

Постоянно созванивались, чтобы решить все технические трудности — с командой и заказчиком

Спорили, предлагали разные способы решения, обсуждали и выбирали оптимальный путь.

А в итоге сделали продукт, который полностью отвечает ожиданиям клиента.

Результат

Вот что мы реализовали в рамках проекта

Экран чата и списка чатов

Статусы online/offline и последняя активность пользователей

Статусы прочтения сообщений

Отправка ссылок и эмоджи

Пуш-уведомления

Отображение последнего сообщения на экране списка чатов

Динамическое появление нового сообщения

Локальное хранение сообщений

Удаление диалогов/сообщений

Комментарий агентства

Анна Сабадаш
Анна Сабадаш

Операционный директор

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

Подписывайтесь на наш тг-канал https://t.me/+e3YmBK7CjcQ2ZTRi там мы рассказываем как меняем позиционирование и работаем с топами рынка. А ещё просто делимся буднями и ищем людей в команду.

https://www.rustore.ru/catalog/app/yushkoff.isawyoumobile.android

Стек технологий

  • Kotlin Kotlin Язык программирования

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

Хотите заказать похожий проект?

Софториум с удовольствием обсудит вашу задачу

Оставить заявку