DOU Проектор: Wake App In Peace — будильник та допомогу армії в одному додатку

У рубриці DOU Проектор всі бажаючі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам є про що розповісти — запрошуємо взяти участь. Якщо ні — можливо, серія надихне на створення власної made in Ukraine продукту. Питання і заявки на участь надсилайте на [email protected] .

Привіт! Мене звати Дмитро Грушевський, і сьогодні я розповім про те, навіщо ми придумали «зростити» будильник і платіжну систему в смартфоні, і як ми це зробили.

Ідея

Незважаючи на те, що проектом Wake App In Peace менше року (ми почали роботу в січні 2017, а офіційний запуск був у травні), самої ідеї створення будильника вже більше двох років. Ми принесли її одному потенційному клієнту в рамках тендеру. У якості «бонусу», доповнення до основного рішення. «Ви ж платіжна система, давайте зробимо це разом», — сказали ми. І хоча ми виграли цей тендер тоді, співпраця не склалася. Так буває. І будильнику довелося чекати ще цілий рік.

Власне, про ідеї. За три роки війни на Донбасі українці втомилися від неї і стали набагато менше відгукуватися на регулярні заклики допомоги армії. Як ні шкода, але в цьому немає нічого дивного.

Задумавшись, ми можемо (і якщо так, то як) вирішити цю задачу, ми розробили і реалізували принципово інший спосіб допомоги армії — плата за свій мирний сон.

Для цього ми створили будильник Wake App In Peace, в якому кожне натискання паузи (snooze) переводить гроші на потреби армії. Адже поки ви продовжуєте спати, військові охороняють ваш мирний сон. Так чому б вам не заплатити за нього? Ви самі можете встановити суму і валюту, в якій хочете зробити пожертву. Ось як це працює:

Мобільний додаток Wake App in Peace розроблено для, мабуть, самої потужної та ефективної волонтерської сили в Україні — благодійного фонду «Повернися Живим» . По-перше, число передплатників їх ФБ-сторінки перевищує 750 тис. чоловік і продовжує зростати. По-друге, фонд зарекомендував себе своєю надійністю, послідовністю і максимальною прозорістю. Адже всі надходження та витрати є у відкритому доступі на сайті і кожен може особисто переконатися, що все до копійки йде на потреби в зону АТО. Звіти є ось тут: savelife.in.ua/report

Така прозорість є і в надходженнях, які жертвують люди через мобільний додаток. Всі гроші прямо надходять у Фонд, і лише платіжна система стягує невелику комісію (2,45 %).

Цим літом «Повернися Живим» відсвяткував своє 3-річчя і за цей час пройшов позначку в 100 млн. грн. зібраних грошей. Фонд допомагає військовим з GPS-навігаторами, мобільними радіостанціями, безпілотними літальними апаратами, прицілами. Усім тим, чого так не вистачає на «передку». Але все ж головною метою у зборі коштів волонтерами «Повернися Живим» є забезпечення нашої армії тепловізорами і приладами нічного бачення. Власне, це також дуже символічно і знайшло відображення в ідеї створення нашого будильника — адже наш з вами мирний сон охороняють ті хлопці, завдяки яким ми тут мирно живемо, працюємо і відпочиваємо, як ні в чому не бувало.

Вислухавши ідею, керівник фонду Віталій Дейнега практично відразу підтримав її. Паралельно з процесом розробки програми, йшов інший процес — творчий. Так, адже ми подумали, що будити користувачів наш будильник повинен непростим рінгтоном. Так з'явилася пісня «Колискова» у виконанні Лінія Маннергейма і Саші Кольцової (гурт Крихітка), слова якої написав Сергій Жадан:

Її прем'єра відбулася 21 травня на Книжковому Арсеналі : bit.ly/2qISQVT . І вже на наступний день в Ukraine Сгіѕіѕ 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 хвилини.

Для того, щоб реалізувати вибір годин в інтерфейсі програми, ми оптимізували код сторінки будильника і зменшили швидкість відкриття програми з 4-х секунд до частки секунди.

На версіях 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 Маркеті і AppStore вже доступна нова версія (1.1.5).

Посилання

Дизайн: wakeapp.com.ua/app-design
Сайт програми: wakeapp.com.ua
FB: www.facebook.com/wakeapp.com.ua
Відео-кейс: vimeo.com/217904983

Опубліковано: 05/09/17 @ 11:07
Розділ Різне

Рекомендуємо:

«Місцеві» проти «понаїхали»
DevOps дайджест #15: як заробити на Jaguar Xf
«Як я провів літо-2017»: літні свята в українських IT-компаніях
Кар'єра і вік: як працевлаштуватися в IT, якщо вам за 50
DOU Ревізор в Харкові: «П'ять поверхів збалансованого простору GlobalLogic»