所以我正在查看规范和文档,看起来一切都与我预期的完全一样,但看起来信标 API 需要在谷歌服务器上注册。我不太明白谷歌服务器的目的是什么?
我希望能够抛出一些带有数据片段的信标,甚至只是一个我可以用来绑定其他东西的唯一标识符,并订阅接近警报。
我猜它与过滤信标有关,你不想与之有任何关系,但似乎如果我有一个明确的应用程序监听它识别的信标,谷歌服务器将不需要在我的基础设施中的位置
所以我正在查看规范和文档,看起来一切都与我预期的完全一样,但看起来信标 API 需要在谷歌服务器上注册。我不太明白谷歌服务器的目的是什么?
我希望能够抛出一些带有数据片段的信标,甚至只是一个我可以用来绑定其他东西的唯一标识符,并订阅接近警报。
我猜它与过滤信标有关,你不想与之有任何关系,但似乎如果我有一个明确的应用程序监听它识别的信标,谷歌服务器将不需要在我的基础设施中的位置
许多开始使用信标的公司将不得不编写一些关键软件:
将信标映射到某个位置的表或数据库,可能还有其他一些元数据(123 号巴士站,或商店 #58133 的现金柜台)
某种 API 允许应用程序在看到信标时获取元数据——应用程序刚刚看到信标 238925823,现在它知道它非常靠近 123 号巴士站。
能够通过并查看我的任何信标是否有电池耗尽等也很好。
Proximity Beacon API 基本上是为了解决这类问题。没有必要使用它,但是对于那些不想自己实现所有这些的人来说,它就在那里。作为奖励,正如上面@davidgyoung所述,您还可以与其他 Google 服务集成。
您不需要 Google 服务器来过滤特定的 Eddystone 信标。开源的Android Beacon 库可以让您在没有任何后端服务器的情况下使用Region
过滤器来执行此操作,该过滤器可以查找具有特定 Eddystone 命名空间 id(以及可选的实例 id)的信标,如下所示:
// Configure to search for only a single Eddystone
// with a specific namespace Id and instance Id
// You can leave the instance Id null to find all
// beacons with a given namespace Id.
Identifier myBeaconNamespaceId = Identifier.parse("0x2f234454f4911ba9ffa6");
Identifier myBeaconInstanceId = Identifier.parse("0x000000000001");
Region region = new Region("my-beacon-region", myBeaconNamespaceId, myBeaconInstanceId, null);
mBeaconManager.setMonitorNotifier(this);
try {
mBeaconManager.startMonitoringBeaconsInRegion(region);
} catch (RemoteException e) {
e.printStackTrace();
}
你可以在这里看到一个完整的例子。
虽然您不需要 Google 服务器平台来过滤信标,但您可以使用它来:
将元数据绑定到您的信标,检测它们的应用程序可以访问这些信标。这些可能是您自己的应用程序或其他有权访问您的信标的应用程序。
与 Nearby 或 Google Now 等其他 Google 服务集成。