Google Nearby предоставил способ отправлять уведомления на устройства Android возле ваших маяков , даже если у пользователей не установлено ваше стороннее приложение . Теперь, когда Nearby прекращается, это уже невозможно . Теперь вы должны установить стороннее приложение на устройстве, чтобы отправлять уведомления пользователю при обнаружении маяка.
Самый простой способ сделать это - создать базовое приложение для Android, которое просто прослушивает маяки и отправляет уведомление при их обнаружении. Это можно сделать с помощью API маяков Google Pproximity, который немного сложен, поскольку требует регистрации ваших маяков на серверах 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 проекта с открытым исходным кодом.