Разработали решение для пагинации сообщений Пагинация — функция, которая позволяет приложению загружать только необходимый объем данных. Это гораздо быстрее, чем ждать открытия всего контента — особенно в условиях медленного интернет-соединения.
Всё приложение написано на Kotlin Multiplatform. Но оказалось, что этот фреймворк не поддерживает пагинацию сообщений.
Разработали решение с нуля, причем оно стало мультиплатформенным, то есть работает на «Андроид» и iOS.
Избавили приложение от внеплановых перезапусков Трудности возникли при работе с системой навигации в Jetpack Compose Configuration. Например, когда пользователь открывал чат из списка контактов или нажимал на пуш, приложение перезагружалось.
Чтобы это поправить, отказались от автоматической обработки и переписали навигацию вручную. Каждую ситуацию программно реализовывали и досконально тестили.
Отладили пуши Бывало, что уведомления появлялись уже после того, как пользователь вышел из своего аккаунта.
Чтобы решить эту проблему, отправляли на сервер сразу два сигнала — идентификатор пользователя и флажок. Последний дополнительно уточнял для бекэнда, нужно ли в этом случае отправлять пуш-уведомление.
Постоянно созванивались, чтобы решить все технические трудности — с командой и заказчиком Спорили, предлагали разные способы решения, обсуждали и выбирали оптимальный путь.
А в итоге сделали продукт, который полностью отвечает ожиданиям клиента.
Вот что мы реализовали в рамках проекта Экран чата и списка чатов Статусы online/offline и последняя активность пользователей Статусы прочтения сообщений Отправка ссылок и эмоджи Пуш-уведомления Отображение последнего сообщения на экране списка чатов Динамическое появление нового сообщения Локальное хранение сообщений Удаление диалогов/сообщений Технический стек В приложении были использованы следующие технологии:
Фронт
Ktor — библиотека, которая реализует сетевой стек (HTTP, WebSocket) для платформ с поддержкой плагинов для расширения функциональности. Kotlin Multiplatform — фреймворк, который позволяет использовать общую кодовую базу для бизнес-логики приложений разных платформ. SwiftUI — фреймворк для создания пользовательского интерфейса на iOS. Jetpack Compose — UI-фреймворк, изначально предназначенный для Android, но позже реализованный и для других платформ. Koin — библиотека для инъекции зависимостей, простая и лаконичная. Отличный выбор для быстрого старта. Бэк
.NET 7 Docker RabbitMQ Kubernetes WebSocket Elasticsearch PostgreSQL MongoDB FIN! Спасибо всем, кто дочитал до конца. И отдельная благодарность нашему заказчику за терпение. Верим, что проект взлетит, а мы сделаем для него еще немало крутых фич.
Подписывайтесь на наш тг-канал , там мы рассказываем как меняем позиционирование и работаем с топами рынка. А ещё просто делимся буднями и ищем людей в команду.