Vladyslav Didyk

EntryCall — мобильное приложение для жильцов

Видеодомофон, который жильцы носят в кармане.

EntryCall — мобильное приложение для жильцов

Это приложение для iPhone и Android, с помощью которого жильцы EntryCall отвечают на звонок в дверь своего дома. Я переписал его с Flutter на React Native и Expo в 2024–2026 годах, и оно работает в обоих магазинах приложений. Видеозвонки идут по WebRTC и звонят на заблокированном телефоне.

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

Роль
Full-Stack разработчик
Сроки
2024 — 2026
Стек
Expo SDK 54 · React Native 0.81 · TypeScript · LiveKit + CallKeep / VoIP push · TanStack Query v5 · NativeWind / Tailwind · Pusher · EAS Build / Update

Задача

Одна кодовая база, два магазина приложений.

Что это за приложение.

Приложение для жильцов — это способ ответить на звонок в дверь откуда угодно. Вы видите гостя на видео, говорите с ним и открываете дверь. Кроме того, здесь цифровые ключи для гостей, живая камера в холле и новости дома. Оно выходит на iPhone и Android одновременно, и звонок в дверь нельзя пропустить.

Сложная часть была первой.

Самая трудная часть — заставить телефон звонить, даже когда приложение полностью закрыто — требует глубокого доступа к системе звонков телефона. Её я сделал первой и упаковал в отдельный набор. Затем всё приложение перешло на Expo, набор инструментов, который сильно ускоряет сборку и обновление, а набор для звонков встроен под ним.

Сначала безопасность

Ключи, которые не попадают на диск.

Ваша сессия живёт только в памяти.

В соответствии с новейшими стандартами мобильной безопасности ключ, который подтверждает, кто вы, хранится только в оперативной памяти телефона. Закройте приложение, и ключа нет. Единственный долгоживущий ключ заперт в аппаратном сейфе телефона — в том же защищённом месте, которым пользуется ваше банковское приложение, — и другие приложения не могут его прочитать.

Как вход остаётся безопасным.

  • Ключ под защитой железа — В iPhone и Android есть встроенный сейф для секретов. Приложение пользуется обоими через одну дверь.
  • Тихое обновление — Когда сессия истекает, приложение обновляет её в фоне и повторяет то, что вы делали. Вы этого не замечаете.
  • Мгновенная блокировка — Если обновление не удалось, приложение везде выходит из аккаунта и сразу стирает все сохранённые данные.
  • Аккуратно разделённые части — Ввод в форме входа не может прервать живой видеозвонок: части намеренно разделены.
Вход без пароля — ваша почта или номер телефона, затем одноразовый код.
Вход без пароля — ваша почта или номер телефона, затем одноразовый код.

Живые данные

Приложение обновляется само — кнопки обновления нет.

Один умный кэш.

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

Что создаёт ощущение живого приложения.

  • Push-обновления — Когда дом публикует новость или меняется камера, сервер сигнализирует приложению, и обновляется именно нужный экран.
  • Бодрствует и спит — При возвращении в приложение данные обновляются. Если пропал сигнал, запросы приостанавливаются и повторяются, когда связь вернулась.
  • Всегда правильный порядок — Данные, которые зависят от вашего дома, ждут, пока дом станет известен, поэтому вы никогда не увидите чужой холл.
  • Чистый выход из аккаунта — Выход стирает все кэшированные экраны. Никаких призраков данных от прошлой сессии.

Видео

Звонки в дверь, которые опережают звонок.

Вся технология звонков в одном наборе.

Весь видеоконвейер живёт в одном собственном наборе. Он находится над всеми экранами, поэтому входящий звонок может занять экран, чем бы вы ни занимались. А звонок в дверь звонит через собственный экран вызова телефона — он выглядит и ощущается как обычный телефонный звонок.

Как разбудить спящий телефон.

Специальный push с высоким приоритетом будит телефон, даже если приложение было закрыто: телефон начинает звонить, ещё до того как приложение полностью запустилось. Живое видео и звук подключаются только после того, как вы ответили.

В руках

Ради чего жильцы на самом деле открывают приложение.

Повседневные функции.

  • Видеозвонки в дверь — Ответьте на домофон, посмотрите на гостя и впустите его, не подходя к коробке на стене.
  • Цифровые ключи — Дайте временный доступ родным, гостям или уборщице и заберите его, когда он больше не нужен.
  • Камера в холле — Смотрите холл и входы в реальном времени из любого места.
  • Новости дома — Объявления от управляющей компании приходят в приложение сразу после публикации — никакой бумаги, приклеенной у лифта.
  • Местная погода — Небольшой тихий и полезный бонус, обновляется каждые пятнадцать минут.

Дизайн-система

Один язык оформления, две платформы.

Единообразно по умолчанию.

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

Значки, которые подходят.

Приложение использует набор значков Apple на iPhone и соответствующий набор на Android, подключённые через один компонент, — поэтому каждая платформа выглядит родной.

Следующий проект: EntryCall — приложения для ТВ