Proximity Beacon API: Android и поблизости

Приложение «Мое Android» используется для трансляции маяков, которые доставляются на устройства рядом с приложением «Мое окружение» в виде уведомлений с URL-ссылками.

Компания Google объявила о закрытии этой службы.

Они рекомендуют использовать API Proximity Beacons.

Прочитав доку, я понял, что каждый маяк нужно регистрировать через REST-API, авторизовать по OAuth и API (одновременно), также там что-то говорят про Google Places и т.д.

Это выглядит довольно сложно.

И я не понимаю: будут ли эти маяки доставляться ближайшим пользователям через Nearby с моей URL-ссылкой? Как это работало раньше.

Может быть, есть либа для Android? Я нашел это. Но это только для "сканирования". Я не понимаю, для чего. Нельзя ли просто транслировать маяки на другие устройства поблизости, как это было раньше?

Спасибо




Ответы (1)


Google Nearby позволяет отправлять уведомления на устройства Android рядом с вашими маяками, даже если у пользователей не установлено ваше стороннее приложение. Теперь, когда приложение "Мое окружение" больше не поддерживается, это больше невозможно. Теперь вы должны установить стороннее приложение на устройство, чтобы отправлять пользователю уведомления об обнаружении маяка.

Самый простой способ сделать это — создать базовое приложение для Android, которое просто прослушивает маяки и отправляет уведомление при их обнаружении. Вы можете сделать это с помощью Google Pproximity Beacons API, что немного сложно, поскольку требует регистрации ваших маяков на серверах Google, включения службы и внедрения ключа API в ваше приложение.

Гораздо проще использовать библиотеку Android Beacon с открытым исходным кодом, которая гораздо более устоялась и не требует сервера или лицензирования. Вы можете прочитать, как это работает здесь. Отправить уведомление об обнаружении маяка очень просто. Просто создайте ссылку на библиотеку и добавьте этот фрагмент кода в пользовательский класс приложения Android.

@Override
public void onCreate() {
    super.onCreate();
    BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
    beaconManager.getBeaconParsers().add(new BeaconParser().
            setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));

    Region region = new Region("com.example.myapp.boostrapRegion", null, null, null);
    RegionBootstrap regionBootstrap = new RegionBootstrap(this, region);
}


@Override
public void didEnterRegion(Region region) {
    NotificationCompat.Builder builder =
            new NotificationCompat.Builder(this)
                    .setContentTitle("Beacon Reference Application")
                    .setContentText("A beacon is nearby.")
                    .setSmallIcon(R.drawable.ic_launcher);

     TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
     stackBuilder.addNextIntent(new Intent(this, MonitoringActivity.class));
     PendingIntent resultPendingIntent =
            stackBuilder.getPendingIntent(
                    0,
                    PendingIntent.FLAG_UPDATE_CURRENT
            );
     builder.setContentIntent(resultPendingIntent);
     NotificationManager notificationManager =
            (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
     notificationManager.notify(1, builder.build())
}

Какой бы API вы ни использовали, главное препятствие — заставить пользователей установить ваше приложение. Если они этого не сделают, они не будут получать уведомления. Google Nearby смог добиться этого, казалось бы, без приложения, встроив себя в клиентское приложение Google Play Services, которое предустановлено на большинстве устройств Android за пределами Китая. По сути, Google доставлял вам уведомления через свое приложение. Теперь Google объявляет, что больше не будет этого делать.

Опять же, единственная альтернатива — создавать и распространять собственное приложение, которое обнаруживает маяки и отправляет ваши уведомления.

Полное раскрытие: я являюсь ведущим разработчиком Android Beacon Library open исходный проект.

person davidgyoung    schedule 29.10.2018