DOU Проектор: Wake App In Peace — будильник и помощь армии в одном приложении
В рубрике DOU Проектор все желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам есть о чем рассказать — приглашаем поучаствовать. Если нет — возможно, серия вдохновит на создание собственного made in Ukraine продукта. Вопросы и заявки на участие присылайте на Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. .
Привет! Меня зовут Дмитрий Грушевский, и сегодня я расскажу о том, зачем мы придумали «срастить» будильник и платежную систему в смартфоне, и как мы это сделали.
Идея
Несмотря на то, что проекту Wake App In Peace меньше года (мы начали работу в январе 2017, а официальный запуск был в мае), самой идее создания будильника уже больше двух лет. Мы принесли её одному потенциальному клиенту в рамках тендера. В качестве «бонуса», дополнения к основному решению. «Вы же платежная система, давайте сделаем это вместе», — сказали мы. И хотя мы выиграли этот тендер тогда, сотрудничество не сложилось. Так бывает. И будильнику пришлось ждать еще целый год.
Собственно, об идее. За три года войны на Донбассе украинцы устали от нее и стали гораздо меньше отзываться на регулярные призывы помощи армии. Как ни жаль, но в этом нет ничего удивительного.
Задумавшись, можем ли мы (и если да, то как) решить эту задачу, мы разработали и реализовали принципиально иной способ помощи армии — плата за свой мирный сон.
Для этого мы создали будильник Wake App In Peace, в котором каждое нажатие паузы (snooze) переводит деньги на нужды армии. Ведь пока вы продолжаете спать, военные охраняют ваш мирный сон. Так почему бы вам не заплатить за него? Вы сами можете установить сумму и валюту, в которой хотите сделать пожертвование. Вот как это работает:
Мобильное приложение Wake App in Peace разработано для, пожалуй, самой мощной и эффективной волонтерской силы в Украине — благотворительного фонда «Вернись Живым». Во-первых, число подписчиков их ФБ-страницы превышает 750 тыс. человек и продолжает расти. Во-вторых, фонд зарекомендовал себя своей надежностью, последовательностью и максимальной прозрачностью. Ведь все поступления и траты есть в открытом доступе на сайте и каждый может лично убедиться, что все до копейки идет на нужды в зону АТО. Отчеты есть вот тут: savelife.in.ua/report
Такая же прозрачность есть и в поступлениях, которые жертвуют люди через мобильное приложение. Все деньги прямиком поступают в Фонд, и лишь платежная система взымает небольшую комиссию (2,45 %).
Этим летом «Вернись Живым» отпраздновал свое
Выслушав идею, руководитель фонда Виталий Дейнега практически сразу поддержал её. Параллельно с процессом разработки приложения, шел другой процесс — творческий. Да, ведь мы подумали, что будить пользователей наш будильник должен непростым рингтоном. Так появилась песня «Колыбельная» в исполнении Линия Маннергейма и Саши Кольцовой (группа Крихiтка), слова которой написал Сергей Жадан:
Её премьера состоялась 21 мая на Книжном Арсенале: bit.ly/2qISQVT. И уже на следующий день в Ukraine Сrisis Media Center прошла пресс-конференция, на которой и были официально представлены мобильное приложение Wake App In Peace и «Колыбельная»:
Реализация
Мы сделали то, что в начале казалось невозможным, — интегрировали в будильник платежную систему, не требующую подтверждения платежей каждый раз. Верификация происходит лишь единоразово при установке будильника и «подвязывании» платежной карты в момент регистрации.
Больше всего сложностей в процессе работы у нас возникло с iOS, т. к. их политика содержит очень много ограничений и направлена против того, чтобы кто-то сам делал будильник, а не пользовался системным. И при этом нам удалось адаптировать будильник в соответствии с правилами и политикой iOS.
Так, например, даже если программа заявляет, что она только для iPhone, но не для iPad, AppStore все равно требует адаптивность для мелких экранов, т. к. на iPad она запускается в режиме совместимости, а там экран даже меньше, чем у iPod 5.
Кроме того, AppStore в принципе не пропустит приложение, с помощью которого можно делать пожертвования (п. 3.2.2 гайдлайнов). Потому нам пришлось конкретно для этой платформы реализовать решение, которое не противоречит данной политике. В итоге, подтверждение согласия на оплату осуществляется переходом в Safari c последующим возвратом в приложение.
Сама реализация будильника очень специфическая задача, потому что мобильные устройства не позволяют держать постоянно действующий процесс в фоне и выполнять в нем операции. Поэтому на iOS приходится использовать локальные оповещения, в которых можно задавать свой звук, но ограниченный 30 секундами. А на Android мы используем системный AlarmManager, который указывает запуск программы с точностью до 1 минуты.
Для того, чтобы реализовать выбор часов в интерфейсе приложения, мы оптимизировали код страницы будильника и уменьшили скорость открытия приложения с
На версиях Android до 4.4 нельзя добавить карты ПриватБанка, потому что этот банк использует шифрование, которое эти версии Android не поддерживают. Об этом нигде не заявлено, и с этой проблемой мы столкнулись в процессе разработки.
На этапе дизайна не всегда получается продумать все элементы, связанные с UX, поэтому в процессе силами всей рабочей команды мы старались сделать все для удобства пользователя, чтобы его коммуникация с приложением была максимально простой с любой точки мира. Например, маска ввода телефона — количество чисел в номерах телефонов в разных странах может отличаться. Или на какой день по умолчанию заводить будильник — на завтра или сегодня и завтра, потому что пользователь может установить будильник после 00.01.
Вот еще некоторые особенности операционных систем:
iOS
Система не поддерживает одновременной параллельной работы нескольких установленных пользователем программ одновременно.
Программа регистрирует в системе локальное оповещение на определенную дату. К нему можно прикрепить звук в формате a-law продолжительностью до 30 секунд. Если продолжительность больше или формат, например, mp3, звук не воспроизводится. Хотя в самой программе mp3 воспроизводится нормально.
Система не показывает локальное оповещение, если программа открыта. Поэтому когда она на переднем плане, будильник срабатывает по JS таймеру.
Android
Обычно программа имеет несколько параллельно запущенных экранов — Activities. В React Native только один Activity. Система предоставляет класс AlarmManager.
Позволяет вызвать Java метод по расписанию приближенно с точностью до 1 мин.
Метод открывает Activity программы. Система не предоставляет ему доступ к контексту React Native. Поэтому в Manifest использовано режим singleTask. Этот режим гарантирует, что одновременно будет работать только один экземпляр Activity. В момент запуска программа запрашивает у системы временный WakeLock, чтобы устройство не уходило в глубокий сон, пока будильник активный.
Также в момент срабатывания отложенного метода Activity спрашивает у WindowManager возможность обходить экран блокировки. Поскольку Activity в React Native только один, то в момент запуска происходит проверка, должен ли один из будильников быть активным сейчас, и если нет, то WakeLock выключается и программа выключает обход экрана блокировки. По отклонению будильника Activity закрывает себя.
Технологии, которые мы использовали при работе над приложением
React Native — для построения интерфейса пользователя на основе компонентов — нативных Android/iOS и кастомных ES.Next.
Redux — сохранение данных для совместного доступа из разных компонентов, оповещение компонентов, какие данные были обновлены, чтобы повторно рендерить только те элементы интерфейса, которые зависят от этих данных.
Slim Framework — API, которое обрабатывает данные, записывает их в БД через PDO и дает интерфейсу пользователя удаленный доступ к ним.
Ну и стандартный функционал Facebook SDK и Google Analytics для логина пользователей, шейров и сбора статистики.
Результаты
Предмет нашей гордости — это признание специалистов в рекламной индустрии и в среде разработчиков. Так, Wake App In Peace уже получил по «серебряной» награде на международном фестивале рекламы «Белый Квадрат» в Минске и Киевском международном фестивале рекламы (КМФР).
Еще одно «серебро» приложение получило на авторитетном международном конкурсе Best Mobile App Awards в номинации «Best Social / Lifestyle App».
Количество собранных денег через Wake App In Peace сейчас измеряется десятками, а не сотнями тысяч гривен, а скачиваний — просто тысячами, как бы нам ни хотелось больше. Но важно учитывать то, что такие результаты получены в условиях полного отсутствия рекламного бюджета на продвижение. Миллионы контактов «заработанных медиа» с момента запуска — всего лишь круги на воде после презентации приложения и «Колыбельной». И мы рассчитываем на существенно большие цифры. Потому параллельно с работой над новым релизом мобильного приложения мы также активно работали над созданием рекламной кампании, которая стартует уже в середине сентября. К счастью, она стала возможной благодаря небезразличным людям. Практически все медиа, где мы будем присутствовать (ТВ, радио, наружная реклама и, конечно же, интернет) — обеспечены безвозмездно партнерами и друзьями, которые прекрасно понимают важность проекта.
Помочь можете и вы. Скачивайте приложение:
Play Market — bit.ly/2q75qLi
App Store — apple.co/2qIM9TX
и отплатите нашим военным за свой мирный сон уже завтра утром!
Мы верим, что Wake App in Peace сможет стать системой микро-пожертвований, которая позволит украинцам поддерживать свою армию каждый день без постоянных напоминаний.
А пока что мы запускаем важное обновление приложения. Самыми существенными изменениями в новом релизе станет дополнительная возможность делать донейшены и без установки будильника — в любой момент и на любую сумму денег. Кроме того, мы немного изменили логику: теперь привязывать банковскую карту нужно не сразу при установке приложения, а только в момент, когда вы хотите установить время будильника. Ну, и более мелкие доработки и исправления. Например, мы добавили FAQ прямо в меню. В Play Maркете и AppStore уже доступна новая версия (1.1.5).
Ссылки
Дизайн: wakeapp.com.ua/app-design
Сайт приложения: wakeapp.com.ua
FB: www.facebook.com/wakeapp.com.ua
Видео-кейс: vimeo.com/217904983