Технологии 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 благоприятно и позитивно повлияет на дальнейшее развитие «Городского Маяка».
ссылка на оригинал статьи https://habrahabr.ru/post/310510/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *