iBeacon: Керівництво до дії

    
 
 
iBeacon є новою технологією, яка побудована на основі Bluetooth Low Energy або BLE. Поки iBeacon найбільше асоціюється з Apple. Починаючи з 2013 року iBeacon вбудована в Apple iOS 7. Вперше пілотний проект був запущений в магазинах Apple в грудні 2013 року і в 2014 році очікується істотне розширення використання технології — via Wi-Life
Добрий день, дорогий Хабрахабр!
 
Сьогодні ми познайомимося з реалізацією функціоналу BLE під iOS на основі iBeacon-девайсів від Roximity . Пошукав, розпитав, пошерстити, ніби як, ніхто так і не писав про практичну сторону питання в рунеті. Статтю ділю на дві частини: про настройку на серверах Roximity і про підкапотну додатків.
 
Зацікавлених прошу під кат.
 
 

Магія на стороні Roximity

Після покупки беконів вам видають «Merchant Login». Я придбав три бекону; ось так виглядає перша сторінка адмінки беконів:
 
 
 
Перед тим, як йти далі, варто відзначити, що:
 
 
     
Кожному бекону можна призначити необмежену кількість тегів
 Кільком бекону можна призначити однакові теги
 Можна створити повідомлення, які будуть вискакувати по певної дії (вхід в зону покриття, вихід з неї, безпосередня близькість)
 Повідомлення можна призначити певним тегам
 Якщо повідомлення призначене тегу, який належить кільком бекон, то ці бекони працюють як один великий бекон
 
Форма створення повідомлення виглядає наступним чином:
 
 
 
Поруч розташована пам'ятка про зразкових радіусах спрацьовування брелоків. Кожному повідомленням можна призначити:
 
 
     
Ім'я повідомлення, яке не світиться ніде, крім цієї адмінки
 Дія, за яким повідомлення спрацьовує
 Саме повідомлення, яке побачить користувач
 Частоту появи
 Теги беконів, що відносяться до повідомлення
 Дату закінчення роботи повідомлення
 
Коли повідомлення налаштовані, ми качаємо SDK, впроваджуємо їх в додаток, і переходимо до наступної частини статті. SDK досить молодий і оновлюється зі стабільною частотою.
 
 
 
 

Магія на нашому боці

Цікаво, що бекони працюють не тільки, коли програма активна, але і у фоновому, і навіть закритому стані! Тобто, якщо у вас встановлено додаток з Roximity SDK, то кожен раз при появі ваших беконів у видимості телефону, на 30 секунд буде відкриватися ваш додаток з викликом відповідних методів з опери Background Fetch.
 
Після правильної установки Roximity SDK, сервера Roximity абсолютно все зроблять за вас. Єдине, що нам потрібно буде зробити (якщо взагалі потрібно буде), це підписатися на ROX_NOTIF_MESSAGE_FIRED :
 
 
[[NSNotificationCenter defaultCenter] addObserver:sharedManager
                                                selector:@selector(handleNotification:)
                                                    name:ROX_NOTIF_MESSAGE_FIRED
                                                  object:nil];

Приблизний метод handleNotification: може виглядати так:
 
 
- (void)handleNotification:(NSNotification *)rawNotification
{
   NSDictionary *notification = rawNotification.userInfo;

   NSString *beaconId = notification[@"com.roximity.notif"][@"com.roximity.notification.trigger"][@"beaconId"];
   NSString *event = notification[@"com.roximity.notif"][@"com.roximity.notification.trigger"][@"event"];
   NSString *name = notification[@"com.roximity.notif"][@"com.roximity.notification.trigger"][@"name"];

   NSLog(@"Beacon event: %@ - %@ - %@", event, beaconId, name);
}

Вибачаюсь за магічні рядки, на жаль, я втратив пам'ятку про відповідних дефініціях. Нагадую, що handleNotification: буде викликатися навіть якщо ваш додаток було повністю закрито!
 
 

Висновок

Ось і все! Користуйтеся беконі на здоров'я і ніколи не бійтеся занурюватися в нові технології.
 
Якщо ви знайшли якісь неточності або друкарські помилки в статті, обов'язково напишіть в мій хабрацентр.
 
Готовий відповісти на всі ваші запитання!
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.