邻近信标 API:Android 和附近

Proximity Beacon API: Android and Nearby

我的 Android 应用程序用于广播信标,这些信标通过 URL link 发送到附近的附近设备作为通知。

Google 宣布 they are going to close this service.

他们推荐使用 Proximity Beacons API

阅读文档后,我知道我需要通过 REST-API 注册每个信标,使用 OAuth 和 API 进行身份验证(同时),他们还说了一些关于 Google 地方等等。

看起来很复杂。

而且我不明白:这些信标会通过我的 URL link 通过 Nearby 发送给附近的用户吗?它以前是如何工作的。

也许有一个 Android 库? 我找到了this。但它仅适用于 "scanning"。我不明白这是为了什么。难道不能像以前一样只向附近的其他设备广播信标吗?

谢谢

Google附近提供了一种向信标附近的 Android 设备发送通知的方式即使用户没有安装您的第三方应用。现在 Nearby 已停产,这不再可能。您现在必须在设备上安装第三方应用程序才能向用户发送有关信标检测的通知。

最简单的方法是构建一个基本的 Android 应用程序,它只侦听信标并在检测到信标时发送通知。您可以使用 Google Pproximity Beacons API 来做到这一点,这有点复杂,因为它需要在 Google 的服务器上注册您的信标,启用该服务,并嵌入一个 API 键我是你的应用程序。

一种更简单的方法是使用开源 Android Beacon Library,它更成熟并且没有服务器或许可要求。您可以阅读其工作原理 here。发送有关信标检测的通知非常简单。只需 link 将此代码片段添加到自定义 Android 应用程序 class.

@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 开源项目的首席开发人员。