邻近信标API:Android和附近

时间:2018-10-29 12:56:33

标签: android beacon google-nearby google-beacon-platform google-proximity-api

我的Android应用程序用于广播信标,这些信标通过URL链接的通知与附近传送到附近的设备。

Google宣布they are going to close this service

他们建议使用邻近信标API

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

看起来很复杂。

我不明白:这些信标会通过我的URL链接通过“附近”传递给附近的用户吗?以前是如何工作的。

也许有一个Android库? 我找到了this。但这仅用于“扫描”。我不明白这是为了什么。像以前一样,是否只能将信标广播到附近的其他设备?

谢谢

1 个答案:

答案 0 :(得分:4)

Google附近提供了一种向信标附近的Android设备发送通知的方法,即使用户未安装您的第三方应用。现在,附近不再可用了,这不再可能。现在,您必须在设备上安装第三方应用程序,以便在检测到信标时向用户发送通知。

最简单的方法是构建一个基本的Android应用程序,该应用程序仅侦听信标并在检测到信标时发送通知。您可以使用Google Pproximity Beacons API进行此操作,该操作有点复杂,因为它需要在Google的服务器上注册您的信标,启用该服务并在您的应用程序中嵌入API密钥。

一种更简单的方法是使用开放源代码的Android Beacon库,该库更加完善,并且不需要服务器或许可。您可以here了解其工作原理。发送有关信标检测的通知非常简单。只需链接到库,将此代码段添加到自定义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,关键的障碍是使用户安装您的应用程序。除非他们这样做,否则他们将不会收到通知。通过将自身嵌入到预先安装在中国境外大多数Android设备上的Google Play服务客户端应用程序中,Google附近似乎能够在没有应用程序的情况下完成此任务。本质上,谷歌是通过他们的应用为您传递通知。现在,谷歌宣布将不再这样做。

同样,唯一的选择是构建并分发自己的应用程序,该应用程序可以检测到信标并发送通知。

全面披露:我是Android Beacon Library开源项目的首席开发人员。