Bootstrapping мобильного приложения, или как немного сэкономить на разработке и публикации

    Token2.com предоставляет сервис двухфакторной аутентификации (2fa as a service) и изначально в качестве основного метода доставки одноразовых паролей (OTP) для второго фактора планировалось использовать SMS. На SMS завязывалось все, и сама технология и даже монетизация — сам сервис предоставляется совершенно бесплатно, пользователь платит только за пакет SMS. На данный момент планируется набрать базу пользователей и установить аппаратный шлюз для SMS — после этого себестоимость снизится, и будет возможно снизить цены для пользователей и начать получать прибыль с проекта.

    Однако, в процессе тестирования выяснилось, что надежность SMS оставляет желать лучшего: процент успешной доставки для многих операторов в странах СНГ не превышает 90% (тестировали как с интернет-шлюзами так и с аппаратными). Решение этой проблемы очевидно — авторизация с помощью мобильных приложений, однако никакого бюджета на это не предполагалось, а в команде людей с опытом разработки под мобильные платформы не было. В тоже время предлагать пользоваться другими приложениями (например Google Authenticator) не хотелось, а хотелось именно свое мобильное приложение, с функцинальностью не хуже, а в идеале, даже лучше существующих аналогов.

    В этой статье я кратко опишу как мы решили это проблему с минимумом затрат и без привлечения сторонних разработчиков.


    Разработка

    Понятно, что заморачиваться с нативной разработкой долго и муторно, поэтому, немного погуглив, решили использовать Cordova/PhoneGap, благо у нас в команде фронтэнд-разработчик уже есть. Прототип на HTML5/Javascript сделали быстро, в качестве шаблона интерфейса использовали Twitter bootstrap.
    К слову сказать, само приложение состоит не только из интерфейса (см. описание приложения), нужен был доступ к камере и буферу, так что пришлось подключать плагины для phonegap. Оба плагина обнаружились в каталоге на build.phonegap в бесплатном доступе и подключились парой строк в config.xml. Кроссплатформенность тоже идеальная, допиливали только css для Windows Phone- там пришлось чуть увеличить размеры некоторых элементов.

    В эмуляторе все работало хорошо, сразу начали тестировать на Android устройствах, так как сервис build.phonegap на лету генерирует apk который можно сразу ставить на реальные девайсы. Выяснилось, что на некоторых устройствах интерфейс ощутимо подтормаживает. Методом тыка определили, что проблема в эффектах анимации прописанных в css стандартного шаблона bootstrap. Убрав все строки с анимацией во всех стилях, получили более шустрый интерфейс и решили уже публиковать приложение.

    Инструменты

    Никакого специального IDE в разработке не использовалось (только обычный редактор текстов), на систему был установлен только NodeJS и пакет phonegap. Для отладки интерфейса использовался Chrome, для тестирования работы плагинов на Android прекрасно подошел эмулятор Bluestacks App Player, для других платформ использовали физические устройства.

    Публикация

    Windows Phone

    Легче всего бесплатно опубликовать приложение получилось для Windows Phone. Мы воспользовались программой dreamspark для студентов. Для этого нужно или связаться со службой поддержки и отправить им скан студенческого билета, или при создании аккаунта использовать адрес почты на домене учебного заведения (.edu/.ac.uk и т.д). У нас такой адрес был (в команде был студент британского вуза), но даже если вы не студент, шанс воспользоваться этой программой все же есть (почитайте пункты 1 и 2 в этой статье ). В рамках Dreaspark Student девелопер аккаунт предоставляется бесплатно на 2 года.

    Android

    В Google Play никаких скидок ни для студентов, ни для кого-либо другого не обнаружено, что не так страшно, так как при регистрации взимается единовременный взнос в размере всего 25 долларов США.

    iOS

    Для Apple App store мы вначале попытались воспользоваться программой iOS Developer University Program. Для этого почты на университетском домене недостаточно, нужно официальное письмо из факультета. Пообщавшись с сокурсниками, выяснили, что процесс может занять до полугода, поэтому пришлось заплатить 99USD за год подписки.

    Итог


    Наш бюджет на создание и опубликование мобильного приложения на трех платформах (iOS, Android, Windows Phone) составил всего 124 доллара США.
    В результате получилось достаточно шустрое приложение, полностью удовлетворяющее всем нашим требованиям.
    Помимо сервиса Token2, приложение можно использовать и для других систем: функциональность даже чуть получше чем у Google Authenticator, так как есть возможность защиты totp профилей пин кодом.
    Есть также поддержка стандарта Mobile-OTP, плюс модифицированный Mobile-OTP с возможностью создания профилей путем сканирования QR картинки.

    Не будем утверждать, что приложение получилось идеальное, так что планы заменить phonegap-приложения на нативные для каждой платформы у нас есть. Однако, так как на данном этапе нам был нужен был скорее прототип, результатом мы довольны.
    • +7
    • 8,5k
    • 6
    Token2.com 25,54
    Компания
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 6
    • +6
      Посмотрите в сторону весьма интересной штуки — Ionic
      Это PhoneGap + AngularJS + UI компоненты
      • 0
        Тоже помню свой первый опыт работы с PhoneGap и с публикацией приложений для Android. Правда тогда я использовал Cardova JS для создания меню и прочего интерфейса. Это было когда только только вышел андроид версии 2.3.3. И тоже все дико тормозило.
        Так я узнал что onclick обрабатывается примерно 0.4 секунды, а touchstart 0.04 и много других особенностей реализации с помощью PhoneGap.
        Сейчас конечно на современных мобилах старое приложение работает просто шикарно, ничего не дергается, все четко
        • +1
          Так я узнал что onclick обрабатывается примерно 0.4 секунды

          300 милисекунд задержки между touchstart есть точнее. И опять же, это «фича» webview а не тормознутость платформы. Вообще меня больше расстраивает ифраструктура кордовы (да, phonegap это cordova), в частности у них очень много косяков своих. Но если приложение ориентирована на бизнес а не на развлечения, в 90% случаев норм.
          • 0
            в частности у них очень много косяков своих

            Ну вот именно поэтому я использовал cordova только как средство сжатия кода, а саму компиляцию в apk делал уже на phonegap.
            И опять же кордову можно и не компилировать вообще, грубо говоря я смотрю пример в Chrome, копирую исходники в папку проекта в eclipse и компилирую, запускаю и все так же работает, просто чуть тяжелее весит само приложение.
            Вообще, помню у меня были плохие впечатления о кордове. На тот момент половину документации была просто пустой, многие методы не описаны и поэтому о их существовании узнавал только через firebug
            • 0
              phonegap === cordova с небольшими бонусами. «сжатие кода» это uglify и т.д. и сборщики типа gulp/grunt. Компиляция в apk — ant скрипты которые в случае cordova и phonegap одинаковые.
        • +1
          Подробнее о разработке напишите. Интересно. :)

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое