Целью тестирования является возможность интеграции технологии Eddystone от Google с уникальным сервисом по взаимодействию с культурными объектами «Городской Маяк» (в разработке для Android, iOS, WEB).

С помощью технологии Eddystone будет происходит замещение совершенно неудобной концепции QR-кодов для получения интересующей информации. Стоит отметить, что был проведен небольшой опрос – 227 человек (85% опрошенных проживают в Нижегородской области и Нижнем Новгороде), где только 5% респондентов постоянно пользуются QR-кодами, a 30% вообще не знают что это. Акцент в сервисе ставится на использование Physical Web.


Статья автора Кирилла Рудакова, в рамках конкурса «Device Lab от Google».

Однако и в WEB-приложении у пользователя есть возможность установить оригинальное приложение для Android или iOS, которое имеет больший спектр возможностей, и более того, сейчас мало мобильных браузеров работают с Eddystone-URL, а лишнее приложение для обнаружения новых типов пакетов, типа Physical Web App, никто не станет дополнительно устанавливать. Поэтому потребность в мобильных приложениях под платформы Android и iOS очевидна.

Тестирование


На тест были переданы пять маячков iBKS105 от Accent Systems, которые изначально не поддерживали Eddystone-EID. Eddystone-EID был анонсирован Google 14 марта, с помощью него маячки транслируют идентификатор, который меняется каждые несколько минут, повышая безопасность и расширяя сценарий их использования. Для того, чтобы маячки поддерживали EID необходимо провести обновление программного обеспечения через официальное приложение (для Android, iBKS Config Tool Beta v0_1, которое Accent Systems высылают по запросу, так как пока его нет в Google Play), выступающее как инструмент для Eddystone GATT service. Про сценарии использования и преимущества можно прочитать тут, а про спецификации Eddystone-EID здесь.



Для работы с нижеследующими интерфейсами программирования приложений и сервисами Google необходимо иметь Google аккаунт. Для работы с маячками и их интеграции с приложением я использовал платформу Google's beacon platform. О настройке и использовании Proximity Beacon API я прочитал тут и тут. После создания проекта в консоли разработчика Google необходимо активировать данный API и получить OAuth 2.0 client ID и API KEY.

С помощью APIs Explorer Протестировал такие REST-запросы, как proximitybeacon.beacons.register – для регистрации ранее не зарегистрированных маячков, proximitybeacon.beacons.update – обновление информации о маячке, proximitybeacon.beacons.activate и proximitybeacon.beacons.deactivate – для активации и вывода из работы маячка, proximitybeacon.beacons.attachments.create – для связи дополнительной информации с заданным маяком, proximitybeacon.beacons.diagnostics.list – для отслеживания статуса маячка. Все запросы можно найти здесь.

Ниже представлен пример регистрации маячка – proximitybeacon.beacons.register и результат выполнения:




Также, для регистрации BLE маячков и созданию небольших вложений к ним с Google Beacon Registry я протестировал мобильное приложение Beacon Tools для Android и iOS. О метаданных для регистрации маяка можно узнать по ссылке.

Для получения сообщений в фоновом и активном режиме от маячков в самом приложении я использовал Nearby Messages API 9.0.2.

После настройки и конфигурировании проекта (более подробно можно прочитать в этой статье и в документации) происходит подключение к Nearby Messages сервисам:

mGoogleApiClient = new GoogleApiClient.Builder(this)
       .addApi(Nearby.MESSAGES_API)
       .addConnectionCallbacks(this)
       .enableAutoManage(this, this)
       .addOnConnectionFailedListener(this)
       .build();
Для получения небольших полезных данных с маячков:
private void publish(String message) {
   mActiveMessage = new Message(message.getBytes());
   Nearby.Messages.publish(mGoogleApiClient, mActiveMessage);
}
private void unpublish() {
   if (mActiveMessage != null) {
       Nearby.Messages.unpublish(mGoogleApiClient, mActiveMessage);
       mActiveMessage = null;
   }
}
private void subscribe() {
   Nearby.Messages.subscribe(mGoogleApiClient, mMessageListener, options);
}
private void unsubscribe() {
   Nearby.Messages.unsubscribe(mGoogleApiClient, mMessageListener);
}
        
@Override
public void onConnected(Bundle connectionHint) {
   publish("Publish!");
   subscribe();
}
@Override
public void onStop() {
   unpublish();
   unsubscribe();
   super.onStop();
}

Для подписки на маячки и получения сообщений с них в фоновом режиме (код с developers.google.com):

private void backgroundSubscribe() {
   Log.i(TAG, "Subscribing for background updates.");
   SubscribeOptions options = new SubscribeOptions.Builder()
           .setStrategy(Strategy.BLE_ONLY)
           .build();
   Nearby.Messages.subscribe(mGoogleApiClient, getPendingIntent(), options);
}
private PendingIntent getPendingIntent() {
   return PendingIntent.getBroadcast(this, 0, new Intent(this, BeaconMessageReceiver.class),
           PendingIntent.FLAG_UPDATE_CURRENT);
}
@Override
public void onReceive(Context context, Intent intent) {
   Nearby.Messages.handleIntent(intent, new MessageListener() {
       @Override
       public void onFound(Message message) {
           Log.i(TAG, "Found message via PendingIntent: " + message);
       }
       @Override
       public void onLost(Message message) {
           Log.i(TAG, "Lost message via PendingIntent: " + message);
       }
   });
}

Для поиска Eddystone-URL я протестировал приложение Physical Web для Android и iOS, а также функцию поиска Physical Web объектов в Google Chrome для iOS.

Стоит отметить, что в приложении «Городской Маяк» используется Firebase 9.0.2., и такими полями, как Status, Description, Properties, c помощью Proximity Beacon API можно удаленно управлять, а также не только получать кадры Eddystone-TLM в Google’s beacon platform, но и агрегировать их в отдельном сервисе.

Заключение


В рамках спецпроекта, тестирование продукта iBKS и технологии Eddystone от Google приложение «Городской Маяк» получит инновационные возможности. Необходимо отметить, что за период тестирования я столкнулся с проблемой обновления предоставляемых маячков, на решение которой потребовалось большая часть времени. В дальнейшем, я также планирую реализовать “связку” Firebase – Google’s beacon platform, описанную выше. Опыт работы с Google’s beacon platform и Nearby Messages API благоприятно и позитивно повлияет на дальнейшее развитие «Городского Маяка».
Поделиться с друзьями
-->

Комментарии (3)


  1. DrPass
    10.11.2016 15:34
    +4

    С помощью технологии Eddystone будет происходит замещение совершенно неудобной концепции QR-кодов для получения интересующей информации.

    Из статьи немного непонятно, как планируется с помощью этой технологии заменять QR-коды. Будут выпущены специальные чернила для печати маячков на принтере, или плагины для их рисования в графических редакторах? :)


  1. igor_suhorukov
    10.11.2016 15:40
    +8

    Вместо бесплатных и работающих и в офлайн QR кодов предлагается технология, требующая спец. оборудования и подключение к интернет?


  1. Arahnid
    11.11.2016 12:43

    Т.е. всех Android-пользователей с версией ОС меньше 4.4 вы просто обламываете игнорируете?