Социальные функции, чаты и real-time функциональность в мобильных приложениях

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 30 из 32 услугВсе 1735 услуг
Простая
от 4 часов до 2 рабочих дней
Средняя
от 1 рабочего дня до 3 рабочих дней
Средняя
от 1 рабочего дня до 3 рабочих дней
Средняя
от 1 рабочего дня до 3 рабочих дней
Средняя
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Социальные функции в мобильных приложениях: чат, VoIP, лента и реакции

Добавить чат в приложение — это не «использовать Socket.io и отображать сообщения». Это оффлайн-доступ, отображение истории при плохом соединении, индикаторы печати, статусы прочтения, push-уведомления при закрытом приложении, и всё это должно работать на Android 8 с 512MB RAM без ANR.

Архитектура чата: WebSocket, XMPP, или готовый SDK

WebSocket — протокол, не архитектура. Голый WebSocket без протокола поверх него — это переизобретение велосипеда. Минимум: определить формат сообщений, heartbeat-механизм, reconnection стратегию, очередь неотправленных сообщений при потере соединения.

На практике для продуктовых чатов используем одно из трёх решений:

Готовый чат SDK — SendBird, Stream Chat, Cometchat. Дают UI-компоненты, серверную инфраструктуру, push-уведомления, модерацию. Быстро, надёжно, но vendor lock-in и recurring costs.

Firebase Realtime Database / Firestore — для простых чатов без требований к масштабируемости >100K concurrent users. Realtime Database удобнее для чата (упорядоченные списки сообщений), Firestore — для более структурированных данных. Ограничение: нет встроенного typing indicators и presence — реализуется отдельно через onDisconnect().

Собственный бэкенд с WebSocket — полный контроль, максимальная кастомизация. Технический стек: WebSocket через socket.io (Node.js) или Phoenix Channels (Elixir) + PostgreSQL + Redis для pub/sub. На мобиле: Starscream (iOS Swift), OkHttp WebSocket (Android), socket_io_client (Flutter).

Оффлайн-режим — самая трудоёмкая часть. Сообщения сохраняются в SQLite (iOS: GRDB, Android: Room) с локальным ID, синхронизируются при восстановлении соединения. Конфликты при одновременной отправке разрешаются через vector clock или server-timestamp ordering.

VoIP: CallKit, ConnectionService и WebRTC

VoIP в мобильном приложении — это два разных сценария: выглядеть как телефонный звонок (системный вызов UI) или просто аудио/видео звонок внутри приложения.

CallKit (iOS) позволяет интегрировать VoIP-звонок в системный интерфейс: приложение появляется на Lock Screen как обычный звонок, работает с Bluetooth-гарнитурами, прерывает другие аудио. Реализуется через CXProvider + CXCallController. Плюс: приложение запускается через VoIP push (PKPushKit) даже когда убито — обязательно для получения входящих звонков.

На Android аналог — ConnectionService API. Более сложная интеграция, поведение варьируется между производителями (Xiaomi, Samsung с их battery optimization агрессивно убивают фоновые процессы).

WebRTC — транспортный протокол для peer-to-peer медиа. WebRTC на iOS через GoogleWebRTC pod или нативный RTCPeerConnection. На Flutter — flutter_webrtc. Сигнальный сервер (обмен SDP, ICE candidates) — обычно через тот же WebSocket канал что и чат.

STUN/TURN серверы — обязательная инфраструктура. Без TURN ~15-20% пользователей за симметричным NAT не смогут установить P2P соединение. coturn — open source TURN сервер, Twilio NTS и Metered TURN — managed варианты.

Лента и реакции

Бесконечная лента — UICollectionView с UICollectionViewDiffableDataSource на iOS, LazyColumn с Paging 3 на Android. Pagination через cursor-based подход (не offset) — при вставке новых элементов курсор не сдвигается, offset — сдвигается, пользователь видит дублирующийся контент.

Реакции (эмодзи на сообщения) — технически: каждая реакция — отдельная запись в БД (message_id, user_id, emoji). Агрегация на сервере: GROUP BY emoji. WebSocket-событие reaction_added обновляет счётчик в реальном времени. Анимация появления реакции — через withSpring (Reanimated) или Core Animation spring на iOS.

Push-уведомления для социальных событий: @mention, ответ на комментарий, новый подписчик — всё через APNs (iOS) и FCM (Android). Для rich notifications (с превью медиа) на iOS — Notification Service Extension, который загружает медиа до показа.

Функция Готовый SDK Кастомная реализация
Базовый чат SendBird, Stream WebSocket + Room/GRDB
VoIP Twilio, Agora WebRTC + CallKit
Лента Paging 3 / DiffableDataSource
Push для соц. событий Firebase FCM/APNs APNs direct

Сроки: базовый чат с историей и push — 4-6 недель. VoIP звонки с CallKit/ConnectionService — 3-5 недель. Полноценная социальная лента с реакциями, комментариями и уведомлениями — от 3 месяцев.