company_banner

Технологии Eddystone заменяют QR-коды

    Целью тестирования является возможность интеграции технологии 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 благоприятно и позитивно повлияет на дальнейшее развитие «Городского Маяка».
    Google 92,12
    Филин Лаки
    Поделиться публикацией
    Похожие публикации
    Комментарии 3
    • +4
      С помощью технологии Eddystone будет происходит замещение совершенно неудобной концепции QR-кодов для получения интересующей информации.

      Из статьи немного непонятно, как планируется с помощью этой технологии заменять QR-коды. Будут выпущены специальные чернила для печати маячков на принтере, или плагины для их рисования в графических редакторах? :)
      • +8
        Вместо бесплатных и работающих и в офлайн QR кодов предлагается технология, требующая спец. оборудования и подключение к интернет?
        • 0
          Т.е. всех Android-пользователей с версией ОС меньше 4.4 вы просто обламываете игнорируете?

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое