[Dev Story] ГдеБагаж. Історія про iBeacon-додатку
Нам пише Андрій Соловйов.
Багато хто з нас люблять подорожувати. Дійсно, подорожі дуже корисні - вони розширюють кругозір, є джерелом нових вражень, по-справжньому допомагають нам відволіктися від рутини і добре відпочити. Зміна обстановки прихильно впливає на наш настрій.
Не дивно, що в час свят і відпусток аеропорти багатьох популярних туристичних напрямків часто переповнені.
В момент реєстрації на рейс і посадки на літак переповненість аеропорту може кидатися на око не так сильно - можна не поспішаючи погуляти по дьюті-фрі, поки чергу на посадку не скоротиться.
У момент виходу з літака в аеропорту прильоту, ступінь роздратування досягає максимуму - величезна натовп вийшовши з літака спрямовується до стрічки отримання багажу для того, щоб зайняти зручне місце, швидше помітити появу свого багажу, схопити його і якнайшвидше покинути аеропорт.
Складність додає той факт, що багато валізи дуже схожі один на одного. Часто люди беруть зовні схожий за кольором і формою валізу, потім розуміють, що взяли чужий, кладуть його назад, і продовжують пошук.
Все це не рідко посилюється затримками у видачі багажу. Довгий штовхання у багажної стрічки може стати реальною причиною зіпсованого відпочинку.
Окремо варто згадати проблему поодиноких мандрівників. Згідно рекомендаціям необхідно прибувати в аеропорт як мінімум за три години до вильоту, щоб встигнути пройти всі формальності і вчасно сісти на літак. У той же час, пройти в деякі приміщення аеропорту, такі як туалети з великим багажем проблематично. Тому поодинокі мандрівники в таких випадках змушені залишати свій багаж біля входу, ризикуючи, що його можуть вкрасти.
Для вирішення всіх цих проблем ми створили мобільний додаток, яке назвали ГдеБагаж.
Зміст роботи програми надзвичайно простий: у валізу кладеться спеціальний невеликий пристрій - Bluetooth-маяк, який виконує тільки одну функцію - випромінює сигнал.
Додаток здатне вловлювати цей сигнал і по його рівню визначати як далеко від вас знаходиться ваш багаж. Тому з нашим додатком більше немає необхідності поспішати займати місце у стрічки видачі багажу - ГдеБагаж сповістить вас про появу вашої валізи, і все що вам залишається зробити - це підійти до стрічки і забрати його.
Аналогічним чином йде справа, коли багаж знаходиться поруч з вами, але поза полем видимості. У разі, якщо зловмисник вирішить вкрасти ваш багаж, то по мірі його віддалення від вас, сигнал пропаде, ви побачите це в додатку, і встигнете швидко зреагувати.
Ідея написання цієї програми виникла у процесі перегляду лекції WWDC 2013 "Що нового в Core Location", де серед інших нововведень в iOS 7 була представлена революційна технологія навігації усередині приміщень iBeacon. Саме технологія iBeacon лежить в основі програми ГдеБагаж.
Коротко про саму технологіїЯк відомо, всередині приміщень навігація GPS утруднена, оскільки стіни і сама будівля є сильним бар'єром для звичайної навігації. Тому в Apple вирішили замість широти і довготи визначати місце розташування за допомогою рівня сигналу від спеціального пристрою - Bluetooth-маяка. Ця технологія отримала назву iBeacon.
Технологія iBeacon працює починаючи з iOS 7.0 і підтримується починаючи з наступних пристроїв: iPhone 4s, iPad (починаючи з 3го покоління), iPad mini, iPod touch (починаючи з 5 покоління).
Більше того, технологія може використовуватися і в Android-пристроях, які вміють працювати з Bluetooth і на них встановлений Android 4.3 і вище.
Слід зазначити, що Bluetooth-маяки, що підтримують технологію iBeacon, є пристроями з низьким споживанням енергії. Один такий маяк може безперервно працювати від однієї батарейки до півроку.
Ось так виглядає мікросхема маяка.
Для того, щоб iPhone-додаток міг "бачити" iBeacon-маяк, необхідно ввести спеціальний номер цього маяка, який виглядає приблизно так:
E2C56WB5-DFRB-48D4-R030-D5F5A71396E1
Цікава відмінність технічної реалізації роботи з iBeacon-маяками в Android і iOS полягає в тому, що для того, щоб iOS 7 міг "бачити" маяк, необхідно, щоб в самому додатку обов'язково вказано його номер, тоді як в Android цієї необхідності немає. Таким чином можна написати Android-додаток, яке буде бачити всі маяки в приміщенні, номер яких додатком невідомий, тоді як такий додаток для iOS написати не можна. Було б цікаво почути думки в коментарях навіщо в Apple поставили таке обмеження.
При створенні інтерфейсу ГдеБагаж ми намагалися зробити його максимально простим і зрозумілим. В деталях інтерфейсу ми обмежилися лише двома елементами - зображенням валізи з можливістю установки кольору і фотографії, і показом відстані до маяка у валізі (немає сигналу, далеко, близько, дуже близько).
Замість нагромадження інтерфейсу різними деталями ми вирішили сфокусуватися на тих нових інтерфейсних фішках, що з'явилися в iOS 7, які чомусь все ще досить рідко використовуються в мобільних додатках, хоча часу з моменту виходу iOS 7 пройшло достатньо.
По-перше, ми використовували нову можливість створення власних ефектів зміни екранів, яку Apple впровадили в iOS 7. При видаленні багажу з програми, екран багажу ховається не стандартним звичним чином, а як би розривається на шматки.
По-друге, іншою цікавою можливістю побудови інтерфейсів в iOS 7 є фізичний движок. Ідея його полягає в тому, що на безліч елементів в інтерфейсі додатка можна накласти дію різних фізичних явищ - тяжіння, пружності, опору і т.д. В додатку ГдеБагаж фізичний движок використовувався для побудови презентації. При перегляді презентації зверніть увагу, як по-різному виходять валізи на презентації отримання багажу. Досягається це шляхом встановлення різних фізичних параметрів, що впливають на рух багажу.
Приблизно два місяці пішло на розробку програми. Однією з основних труднощів в процесі створення виявилася складність з купівлею iBeacon-маяків. Ми замовили примірники маяків у основних виробників (estimote, kontakt, китайці). Складність виникла на митниці. Оскільки маяки містять bluetooth, bluetooth у своїй роботі часто використовує шифрування, то для оформлення посилки митники вимагають нотифікацію ФСБ про те, що маяки не представляють загрозу Росії. Кілька посилок в результаті було відхилено з цієї причини.
Ще одним неприємним сюрпризом для нас виявився процес розгляду додатки цензорами AppleStore. На модерацію додатки пішло в цілому 17 днів.
Схоже процес модерації додатків, які використовують технологію iBeacon ще не відпрацьований, оскільки при модерації цензори Apple попросили записати відеоролик про те, як працює додаток з биконами. Це сталося 26 березня (статус Metadata Rejected) через 6 днів після відправки. В той же день ми зняли відеоролик демонструє роботу додатка, залили на ютуб, і відправили їм посилання. Пройшло ще 5 днів, і ми одержуємо той же самий відмова з причиною, що їм потрібна посилання на відеоролик. Ми відповіли, що посилання на ролик ми відправили, і виклали на всякий випадок теж відео до себе на сайті, та відправили ще раз. Почекавши ще 6 днів ми нарешті отримали схвалення, і додаток з'явилося в AppStore. Думаю розробникам iBeacon-додатків варто мати на увазі цей досвід при відправленні своїх додатків. Готуйте заздалегідь відеоролик з демонстрацією роботи.
До самого останнього моменту у нас були сумніви, чи працюватиме ця ідея в реальному аеропорт, де знаходиться багато людей. Адже, як відомо, робота технології iBeacon заснована на потужності сигналу від маяка, а кожен стоїть перед багажем людина є перешкодою. Звичайно, ми тестували роботу програми в людних місцях, навіть тестували його роботу в лісі, де у якості людей виступали дерева. Всі тести проходили відмінно, але все ж хотілося випробувати роботу в живу.
Зрештою ми вирішили купити квитки в Париж, і подивитися роботу програми в реальних умовах. Наші найгірші побоювання не виправдалися, додаток помітило багаж приблизно за 30 секунд до його виходу на стрічку.
Де взяти маячки?Ми не ставили програмно ніяких обмежень на роботу з маячками. Тому програма буде працювати з будь-яким маяком, який працює за технологією iBeacon.
Якщо ви хочете придбати фірмовий маячок додатки ГдеБагаж (як на фотографії), ви можете залишити попереднє замовлення через додаток.
Також ви можете купити купити маячок через Ebay безпосередньо в Китаї. Це самий недорогий і безпечний з точки зору митниці варіант. Проблем на митниці з доставкою таких маячків в нас небуло.
При покупці звертайте увагу, щоб була інформація про номер маячка (UUID), інакше додати в додаток його буде складно.
При купівлі маячків на сайтах http://estimote.com/ і http://kontakt.io/ майте на увазі, що великий ризик одержати проблеми на митниці. Ми робили кілька замовлень на цих сайтах, і проблеми були завжди. Приблизно в 50% випадків нам вдавалося переконати митницю, що маячки не містять функції шифрування і не будуть використовуватися в комерційних цілях (для цього їм потрібно як мінімум показати документ від виробника, який підтверджує відсутність шифрування, технічні характеристики і опис протоколу).
Ось наше відео, яке показує додаток в роботі.
iPhone + iPad: Free [Завантажити в App Store]
Android: Free [Скачати в google play]
Дана історія опублікована в рамках рубрики Developer Story, де розробники діляться секретами своєї внутрішньої кухні.![[Dev Story] ГдеБагаж. История об iBeacon-приложении](/images/articles/20140413/3e6531c7824d97e7ed5534e3f8634e06.jpg)
![[Dev Story] ГдеБагаж. История об iBeacon-приложении](/images/articles/20140413/3f056456b769642ed7fc2452b73ddc60.jpg)
![[Dev Story] ГдеБагаж. История об iBeacon-приложении](/images/articles/20140413/b6c8d8342e7f4f9ccd1cd18d2885fa98.jpg)
![[Dev Story] ГдеБагаж. История об iBeacon-приложении](/images/articles/20140413/70327d43331e4e3f76e01112c555f535.jpg)
![[Dev Story] ГдеБагаж. История об iBeacon-приложении](/images/articles/20140413/81c76b351b186ca25c70435bac7195b8.jpg)
![[Dev Story] ГдеБагаж. История об iBeacon-приложении](/images/articles/20140413/e0143bd6ff59540df20e37325cd0c5f3.jpg)
![[Dev Story] ГдеБагаж. История об iBeacon-приложении](/images/articles/20140413/59c98b1f81788f03d74f33e7fd234ba3.jpg)
![[Dev Story] ГдеБагаж. История об iBeacon-приложении](/images/articles/20140413/a065f9b9b1280180b4da22b27176eac9.jpg)
![[Dev Story] ГдеБагаж. История об iBeacon-приложении](/images/articles/20140413/c008adc048124a84d7be3bb0fd12163f.jpg)
![[Dev Story] ГдеБагаж. История об iBeacon-приложении](/images/articles/20140413/7e3f07d034d0a204ffa8f1f1c57e0943.jpg)