Proximity Beacon API: Android и рядом

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

Google объявил, что собирается закрыть этот сервис.

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

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

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

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

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

Спасибо

1 ответ

Решение

Google Nearby provided a way to send notifications to Android devices near your beacons even if users do not have your third-party app installed. Now that Nearby is being discontinued, this is no longer possible. You must now get a third party app installed on a device in order to send notifications to a user on beacon detection.

The simplest way to do this is to build a basic Android app that just listens for beacons and sends a notification when one is detected. You can do this with the Google Pproximity Beacons API, which is a bit complicated because it requires registering your beacons with Google's servers, enabling the service, and embedding an API key I your app.

Гораздо более простой способ - использовать библиотеку 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.

Другие вопросы по тегам