原文:点击打开链接
简介
蓝牙技术beacon是一个大的热点。 2014年是许多组织开展初步试点项目的一年,预计2015年将是大型烽火台部署创造重大新服务的一年。事实上,ABI Research预测,到2019年,我们将会看到6000万个单位商场。这将有非常多的beacon(信标)。
在大多数情况下,beacon用于确定一个人在百货公司,机场,办公室或博物馆等建筑物内的位置,并提供利用位置信息的服务。在这些情况下,beacon安装在固定的位置,并且人的智能手机上的应用程序知道beacon的位置。 有趣的是,虽然我们已经开始看到beacon是移动而不是静止的新类应用程序。 看看灯塔解决方案,一个可穿戴的灯塔设备,旨在跟踪有特殊需求的学生,并保持他们的安全。我们认为未来将会看到更多涉及移动和可穿戴beacon的解决方案。
这是针对开发人员的关于beacon应用程序开发的三部分系列的第一部分。 如果您对beacon完全陌生,建议您在深入介绍本系列将介绍的beacon和beacon应用的更多技术方面之前做一些介绍性阅读。
Beacon广播数据格式
关于beacon,特别是有关iBeacon(苹果专用于beacon广播数据的格式)的文章已经写得很多。 iBeacon由iOS设备本地支持,但在某些情况下,还有一些需要满足的许可要求。 您可以在Apple.com上阅读关于iBeacon的所有信息。
但是,还有其他的beacon广播格式规范,如Radius Networks的AltBeacon。 AltBeacon是开源的,可以在任何平台上使用,不受限制。 Android的开源API也已经发布。
我最近花了一些时间使用AltBeacon格式和Android API,并决定分享我的经验。我从一些“开发者的beacon基础知识”开始。对于你们中的一些人来说,这是熟悉的,所以可以随意跳过。
应用和beacon
典型的beacon(例如由商店部署的beacon)具有用于每个智能手机平台的相关应用程序,其被设计为以某种方式利用它。这些beacon的目的以及应用程序应该如何回应的方式由组织定义。 例如,营销部门可以设置应用程序,以弹出用户站在前面的立体声的20%的优惠券。
现在,一个单一的广义的beacon应用程序无法理解它遇到的特定beacon背后的意图(因为你得到的特定beacon数据是别人设定的,所以你不会知道意图),并以合理的方式行事。有一天这可能会改变。 Google的物理网络实验在一定程度上关心这个问题。
位置确定
任何beacon的主要目的是允许应用程序确定其与beacon的当前接近度,并由此以某种方式采取利用该位置信息的动作。 应用程序必须能够访问将蓝牙广播数据包中收到的beacon标识映射到实际地理位置的数据,这些地理位置使应用程序尽可能地简单易行。 例如,可以通过将beaconID映射到经度/纬度坐标来最好地服务一个应用程序,而对于另一个应用程序,从beaconID导出商店和部门ID可能更好,使得应用程序知道用户刚刚走进伦敦一家商店的体育用品区域。
将beacon广播数据包中的beacon标识映射到某种位置信息是打开beacon功能的关键。 beaconID数据可以由设备上的应用在本地映射,或者发送到云/网络以远程解决。 本地数据存储具有优势,因为即使没有网络,它也可以快速访问和使用。 远程存储数据意味着所有应用程序都使用相同的数据,因为只有一个副本,但网络访问将不可避免地需要更多的时间,并且需要注意确保用户体验不受影响。在某些情况下,最好的方法是混合存储位置数据的中央副本,每当它发生更改时,远程存储并同步到应用程序的本地数据存储。 这样,即使没有可用的网络,应用程序也可以使用最新的数据副本。
隐藏在后台
用户不需要明确地启动应用程序来检测beacon。 一个好的beacon应用程序会自动在后台运行,不需要用户干预。需要注意确保系统资源,尤其是电池电量,不管发生的任何后台处理都能够节省使用。
什么叫靠近?
这是所有beacon应用程序开发人员需要考虑的问题,它有两个方面。 一方面,应用要求需要指出触发行为的条件,而这些条件必须包括与beacon或beacon距离有关的事情。 对于某些应用,只要在一个或多个beacon范围内(几个beacon集体可能定义一个“区域”)就足以保证触发一个动作。 如果您想要在客户走进商店的特定部门或乘客进入机场的登机区域时触发某项操作,则可能会出现这种情况。
对于其他应用程序,也许用户在应用程序通知用户之前需要非常接近特定的beacon。 博物馆或艺术画廊指南可能只是想通知用户,当他们非常接近具体的主要展品。
估计用户距离beacon的距离是可能的。 这种估计的基础是由接收机(智能手机)测量的信号强度以及包含在广播数据包内的数据,该数据表明在距离beacon一定标准距离(例如1米)处测量时应该是什么信号强度。 如果您使用的是API,您可能会发现API很容易提供距离估计值。 然而,你到达估计的距离,它仍然只是一个估计,尽管是一个对于大多数目的来说足够准确的距离。
动作
根据beaconID确定用户的位置后,应用程序应该做什么? 答案是“因地制宜”。市场营销是通过将产品和特别优惠得到用户的关注而成为beacon的流行应用。 博物馆和画廊正在创建应用程序,自动通知用户他们刚刚进入的房间和主要展品。 机场利用beacon跟踪整个机场旅客的进展情况。 在后一种情况下,机场beacon应用所采取的行动可能对用户是不可见的。没有“一刀切”的答案。
我们可以说的是,应用程序设计师必须谨慎以确保beacon应用程序获得用户注意的方式不会变得干扰或烦人。 毕竟用户知道如何卸载应用程序!
AltBeacon数据格式
让我们转到Alebeacon。AltBeacon广播数据在制造商特定的广播数据(AD)结构(使用蓝牙广播包)中被编码。 其他广播数据格式也是如此。AltBeacon格式的完整规范可以在https://github.com/AltBeacon/spec中找到,同时还有以下两个图表
正如您所看到的,在广播数据结构中,我们有一个代码,指示这是一个称为BEACON CODE的AltBeacon广播数据包,一个20位八位字节BEACON ID,唯一标识一个特定beacon,以及一个REFERENCE RSSI值,其中包含平均期望信号强度 当从beacon一米处测量时。
BEACONCODE,相当有趣,有固定的十六进制值0XBEAC。 这不可爱吗?
AltBeacon规范建议,对于给定组织单位部署的所有beacon,BEACON ID的前16个或更多字节应该相同。 其余部分可以细分,并以任何你喜欢的方式使用,但总体结果必须是每个beacon保留一个唯一的标识符。
在第2部分中,我将重点介绍一下AltBeacon Android API,并介绍一下我使用API编写的博物馆指南应用程序。
注:以上仅是翻译,大多来自谷歌翻译,我只是一个搬运工。