Это приложение, которое было изначально заказано операторм связи LanTa (г. Тамбов) у студии мобильной разработки Mad Brains (г. Ульяновск) в 2020 году для проекта умных домофонов. Это изначально был MVP, который умел принимать видеозвонки с IP домофонов Beward, открывать двери, калитки, шлагбаумы, принимать оплату от клиентов, подтверждать доступ пользователя к адресу, оставлять заявки на подключение, отображать камеры видеонаблюлюдения с архивом, получать и отображать текстовые уведомления, вести чат с оператором, управлять настройками домофона и управлять доступами для других жителей квартиры. Позже ЛАНТА стала развивать этот проект совими силами и дополнять его дополнительными фичами. Мы добавили: видовые камеры, журнал событий, настройки функции распознавания лиц, интеграцию с Siri, Быстрыми командами, а также исправляли баги, которые за время работы то там, то тут всплывали.
В октябре 2021 года мы созрели для того, чтобы открыть исходные коды нашего проекта и предлгаем всем, кто заинтересован в построении аналогичных сервисов не "изобретать свой велосипед" с нуля, а вместе с нами развивать данный проект, обмениваясь идеями и наработками. На этот момент приложением пользуется около 15 тысяч пользователей, живущих в домах оборудованных домофонными панелями и системами видеонаблюдения от нашей компании.
В сентябре 2022 года мы решили сделать OEM-версию приложения "Теледом" для операторов, которым хочется сразу попробовать приложение в деле, прежде чем принимать решение о публикации собственного приложения на маркетах. см. https://github.com/rosteleset/SmartYard-iOS/tree/Teledom(OEM-version)
- Две категории набора прав пользователей: владелец и житель. Владелец у квартиры может отсутствовать или быть только один - это лицо кому принадлежит лицевой счёт квартиры. Владелец может добавлять и удалять из квартиры жителей. Житель может удалить только себя из квартиры.
- Добавление владельцев в квартиры происходит через административный интерфейс оператора после заключения договора. Также доступно добавление по номеру догвора и паролю от уже заключенного договора на услуги(интернет или тв) оператора по этому адресу. Если до этого у квартиры был владелец - новый его права забирает себе.
- Добавление жителей в квартиру возможно через: добавление владельцем из настроек доступа в приложении, через сканирование QR-кода квартиры приложении, либо сотрудником Оператора по предъявлению доказательств проживания в квартире (прописка или свежая квитанция за коммунальные услуги от этой квартиры)
- В приложении для добавления нового адреса пользователь указывает его, затем система проверяет доступные услуги по этому адресу и если пользователю требуется заключить договор на интернет/тв/телефон, то приложение создаёт нам заявку на подключение и мы приподключении подтверждаем его адрес и добавляем пользователя. Если же пользователю надо только подтвержить свою принадлежность к адресу для домофона, то мы формируем заяву на достаку персонального QR-кода его квартиры в его почтовый ящик.
- Каждый пользователь может быть привязан к нескольким разным квартирам - в приложении будут отображаться все его квартиры с соответствующим набором прав.
- Приложение принимает входящие вызовы от домофонов, если это не выключено в настройках приложения для этого адреса.
- Экран входящего выхова поддерживает альбомную и портретную ориентацию телефона.
- Есть переключение между динаминками телефона, при поднесению телефона к уху динамик переключается автоматически.
- При поступлении входящего вызова приложение позволяет видеть изображение звонящего до ответа на вызов.
- Поддерживаются два режима доставки входящих вызовов: через Push-Notification (как видео-звонок в WhatsApp) и через VoIP-Push+CallKit (как аудио-звонок в WhatsApp)
- До ответа на звонок доступен видео-глазок, который запускает слайд-шоу с камеры домофона (частота кадров от скорости интернет зависит, но в среднем 2-3 кадра в секунду)
- После ответа на вызов изображение и звук переключаются на SIP медиа-потоки
- Для каждого адреса есть возможность отображать журнал событий с видео или изображениями в момент события.
- Для квартиры можно менять код для входа, включить автоматичское открывание на час (режим "Жду гостей"), поделиться временным доступом к воротам-шлагбауму (через звонок на специальный номер телефона)
- Если на адресе есть камеры видеонаблюдения, то доступна карта с их расположением, с возможностью посмотреть картинку в онлайн или из архива.
- При просмотре видеокамер поддерживается масштабирование изображение жестом pinch, корректно обрабатываются пропуски в архиве если они есть и подгружается информация о всех доступных интервалах в архиве.
- В архиве видеозаписей возможен выбор фрагмента с последующим получением ссылки на его скачивание в уведомлении.
- На вкладке уведомлений отображается Web-View, в котором отображается история уведомлений для пользователя. Получаемые уведомления приходят в виде Push-Notifications
- На вкладке Чат - также готовый компонент на базе Web-View от me-Talk (такой же как используется на нашем основном сайте)
- На вкладке Оплатить - доступны все лицевые счета, которые привязаны к этому пользователю, с отображением баланса, возможностью оплаты через ApplePay и ссылкой на личный кабинет.
- В меню Городские камеры доступны трансляции с публичных камер, а также возможностью отправить нам запрос на получение записи из архива этих камер (прямой доступ к архиву недоступен из приложения).
- В меню Настройки Адресов по каждому адресу можно управлять доступом, менять коды и настраивать режимы работы домофона под себя.
- В меню Общие настройки настраивается способ доставки звонков (CallKit - не CallKit), а также параметры уведомлений.
- Приложение имеет виджет для экрана Today, а также интеграцию с Shortcuts и Siri
- Если для домофона включена поддержка распознавания лиц, то приложение позволяет пользователям управлять возможностью открывать дверь по лицу. Жители могут добавлять и удалять свои лица через журнал событий или меню настроек адреса. Владелец помимо этого может удалять лица других пользователей из своей квартиры.
Приложение использует наше собственное API. (ссылка на API) Исходный код back-end, реализующий API, на текущий момент неотделим от нашей архитектуры и от всех остальных наших систем, поэтому на текущем этапе мы не можем вам предложить ничего лучше, как реализовать у себя это API своими силами. В описании API есть пример того, как делается интеграция между Asterisk и мобильным приложением на примере Liphhone. Для понимания принципов построения системы это будет также полезно изучить.
- CocoaPods для управления используемыми фреймворками
- linphone-sdk для реализации SIP части
- Flussonic для работы с архивом видеокамер
- Firebase Cloud Messaging для работы с Push-уведомлениями
- MapBox для работы с картами (обязательно нужно на их сайте зарегистрироваться, чтобы получить токен для работы с API и для установки)
- Crashlytics для сбора информации о сбоях
- Yandex AppMetrika для сбора пользовательской аналитики
- Реактивный фреймворк RxSwift и
- XCoordinator для реализации архитектуры MVVM+Coordinator
- Фреймворк Moya Swift для удобной работы с REST API
- Онлайн чат talk-me для чата с пользователями.
Возможно, вам также может понадобиться что-то поменять в дизайне приложения, или в коде вы увидите ссылки на номера экранов, тогда наши макеты экранов приложения в Figma могут быть полезны.
- Где брать GoogleService-Info.plist для сборки приложения?
GoogleService-Info.plist - это файл настроек проекта для работы с Google Firebase, который необходимо скачать из консоли Firebase после регистрации там своего проекта. Инструкция по регистрации https://firebase.google.com/docs/ios/setup
Данный проект опубликован под стандартной общественной лицензией GNU GPLv3. Вы можете модифицировать и использовать наши наработки в своих проектах, в т.ч. коммерческих, при обязательном условии публикации их исходного кода. Также мы готовы рассмотреть ваши Pull requests, если вы хотите чтобы наш проект развивался с учётом ваших модификаций и доработок.