SIP, PJSIP, состояния вызовов и связь с оборудованием.
ЭЛТЕКС · основной проект с 2023 года
ELPH: от телефона к двум продуктам связи.
Сначала это был iOS-клиент для IP-телефонии на оборудовании ЭЛТЕКС. Затем в нём вырос мессенджер. Позже команда разделила SIP- и WebRTC-направления на два самостоятельных приложения.
- Начало
- iOS-разработчик · апрель 2023
- Позже
- Тимлид iOS
- С 10.2025
- Principal Developer
- Фокус
- Ядро звонков, чатов и модули
01 / Контекст
Сначала это была звонилка, а не мессенджер.
ЭЛТЕКС производит сетевое оборудование, в том числе для IP-телефонии. Мобильное приложение Eltex Phone развивалось вокруг звонков и SIP-инфраструктуры компании. Когда я пришёл в проект, iOS-клиент был написан на Objective-C, а связь с телефонией проходила через PJSIP — библиотеку на C.
Первые примерно полгода моей основной задачей был перевод приложения на Swift. Новый код должен был сохранить поведение звонков и корректно взаимодействовать с низкоуровневым SIP-слоем.
02 / Моя роль
Фокус менялся вместе с продуктом.
Я пришёл iOS-разработчиком, позже стал тимлидом iOS, а с октября 2025 года перешёл на позицию Principal Developer. В разные периоды это означало низкоуровневую работу со звонками, проектирование ядра чатов и WebRTC, общие библиотеки, наставничество и настройку процессов команды.
03 / Устройство продукта
От одной кодовой базы — к двум направлениям.
Из приложения для звонков ELPH вырос в пространство для ежедневного общения: личные и групповые чаты, обсуждения, папки, ответы, реакции, вложения и управление участниками. Рядом осталась корпоративная телефонная связь с контактами, номеронабирателем и конференциями.
Общая логика переписки и события в реальном времени.
Продолжение телефонного направления на PJSIP.
Новая ветка связи на LiveKit, выросшая из общей основы.
04 / Экраны продукта
Сценарии, которые поддерживает общая логика.
Экраны показывают результат работы команды и масштаб продукта. Выберите слой, затем откройте изображение крупнее. Управление вкладками работает мышью и стрелками клавиатуры.
05 / Инженерная основа
Пакеты, на которые опираются функции.
В 2026 году заметная часть моей работы лежит ближе к основанию приложения. Повторяемая логика выделяется в самостоятельные Swift-пакеты: так клиенту проще развиваться и использовать общие решения в других проектах.
Deep links
Единый вход в нужный сценарий приложения.
Backend и сокеты
Запросы и события в реальном времени.
Метрики и трассировка
Отдельная библиотека на OpenTelemetry.
Чат как модуль
Выделение чата для повторного использования; задача ещё в работе.
06 / Связанные истории