Giter VIP home page Giter VIP logo

sergey-shabanov / smartyard-ios Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rosteleset/smartyard-ios

0.0 0.0 0.0 19.99 MB

Мобильное приложение для умных домофонов и видеонаблюдения под iOS / iOS mobile application for SIP intercoms and CCTV for customers.

License: GNU General Public License v3.0

Ruby 0.21% Objective-C 0.05% Swift 99.74%

smartyard-ios's Introduction

Smart Yard iOS

История проекта

Это приложение, которое было изначально заказано операторм связи 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. (ссылка на API) Исходный код back-end, реализующий API, на текущий момент неотделим от нашей архитектуры и от всех остальных наших систем, поэтому на текущем этапе мы не можем вам предложить ничего лучше, как реализовать у себя это API своими силами. В описании API есть пример того, как делается интеграция между Asterisk и мобильным приложением на примере Liphhone. Для понимания принципов построения системы это будет также полезно изучить.

Используемые фреймворки и компоненты (основные)

Дизайн

Возможно, вам также может понадобиться что-то поменять в дизайне приложения, или в коде вы увидите ссылки на номера экранов, тогда наши макеты экранов приложения в Figma могут быть полезны.

Скриншоты

Частые вопросы (FAQ)

  • Где брать GoogleService-Info.plist для сборки приложения?

GoogleService-Info.plist - это файл настроек проекта для работы с Google Firebase, который необходимо скачать из консоли Firebase после регистрации там своего проекта. Инструкция по регистрации https://firebase.google.com/docs/ios/setup

Лицензия и условия использования

Данный проект опубликован под стандартной общественной лицензией GNU GPLv3. Вы можете модифицировать и использовать наши наработки в своих проектах, в т.ч. коммерческих, при обязательном условии публикации их исходного кода. Также мы готовы рассмотреть ваши Pull requests, если вы хотите чтобы наш проект развивался с учётом ваших модификаций и доработок.

smartyard-ios's People

Contributors

sbca68 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.