iBeacon: Руководство к действию

в 17:47, , рубрики: ibeacon, iphone, разработка под iOS, руководство, метки: ,

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». Я приобрел три бекона; вот так выглядит первая страничка админки беконов:

iBeacon: Руководство к действию

Перед тем, как идти дальше, стоит отметить, что:

  • Каждому бекону можно назначить неограниченное количество тегов
  • Нескольким беконам можно назначить одинаковые теги
  • Можно создать сообщения, которые будут выскакивать по определенному действию (вход в зону покрытия, выход из нее, непосредственная близость)
  • Сообщения можно назначить определенным тегам
  • Если сообщение назначено тегу, который принадлежит нескольким беконам, то эти беконы работают как один большой бекон

Форма создания сообщения выглядит следующим образом:

iBeacon: Руководство к действию

Рядом расположена памятка о примерных радиусах срабатывания брелоков. Каждому сообщению можно назначить:

  • Имя сообщения, которое не светится нигде, кроме этой админки
  • Действие, по которому сообщение срабатывает
  • Само сообщение, которое увидит пользователь
  • Частоту появления
  • Теги беконов, относящихся к сообщению
  • Дату окончания работы сообщения

Когда сообщения настроены, мы качаем SDK, внедряем их в приложение, и переходим к следующей часте статьи. SDK довольно молодой и обновляется со стабильной частотой.

iBeacon: Руководство к действию

Магия на нашей стороне

Интересно, что беконы работают не только, когда приложение активно, но и в фоновом, и даже закрытом состоянии! То есть, если у вас установлено приложение с 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: будет вызываться даже если ваше приложение было полностью закрыто!

Заключение

Вот и все! Пользуйтесь беконами на здоровье и никогда не бойтесь окунаться в новые технологии.

Если вы нашли какие-либо неточности или опечатки в статье, обязательно напишите в мой хабрацентр.

Готов ответить на все ваши вопросы!

Автор: backmeupplz

Источник

Поделиться

* - обязательные к заполнению поля