从iBeacon开始
入门iBeacon概述
在iOS 7中引入的iBeacon是一项令人兴奋的技术,可以实现新的位置感知
可能的应用程序。利用低能耗蓝牙(BLE),一种具有iBeacon技术的设备
可以用来建立对象周围的区域。这允许iOS设备来决定
当它进入或离开该区域时,以及估计接近信标的距离。在那里
在使用iBeacon技术时,需要同时考虑硬件和软件组件吗
本文将介绍这两种方法,以及建议的用法和最佳实践
以确保高效的部署,带来出色的用户体验。
iBeacon有三种不同的受众。你可能属于其中的一种,两种,或者可能都属于这三种
类别,取决于你的角色。
- 应用程序开发者
如果想在应用程序中添加新的位置感知功能,可以使用Core
当iOS设备移进或移出信标时,iOS中的位置api将被通知
地区。您还可以确定与产生iBeacon的设备的近似距离
广告。你需要开始的一切都包含在iOS SDK中,没有额外的
许可证是必需的。 - 人们使用iBeacon技术部署设备
无论你是在经营一个体育场馆、一个博物馆、一个零售商店,还是其他任何一个
可以使用信标的物理位置,你需要知道这些
设备工作,信号强度和材料的相关问题,并了解如何
校准和测试您的部署。如果您对使用iBeacon Logo感兴趣
但不需要使用iBeacon技术的设备,你需要
使用iBeacon logo前,请获取iBeacon logo license。请访问https://
申请iBeacon logo使用license: developer.apple.com/ibeacon/。
3.人们用iBeacon技术制造设备
如果你对使用iBeacon技术制造设备感兴趣,你将需要这样做
在搭建这些设备之前,请获取license。请访问https://developer.apple.com/
ibeacon/申请ibeacon license。被许可方有权查阅技术规范,获得使用iBeacon标志的许可和iBeacon身份指南。
带有iBeacon技术的设备
带有iBeacon技术的设备可以使用纽扣电池供电一个月或
更长的时间,或者使用更大的电池一次运行几个月,或者可以外部供电
延长的时间。iOS设备也可以配置为生成iBeacon
广告,尽管这个功能在范围上是有限的。这将是合适的
例如销售点应用程序或kiosk应用程序,或希望成为
当有人在积极使用该应用程序时,短时间内使用iBeacon。
iBeacon广告通过Bluetooth Low Energy提供以下信息:
UUID、重要值和次要值提供了iBeacon的标识信息。一般来说,这个信息本质上是分层的,有主字段和次要字段允许细分由UUID建立的标识。uuid可以由使用OS X中的uuidgen命令行实用工具,或使用NSUUID编程基础类。
下表展示了如何将这些值用于全国性零售的示例商店。UUID由所有位置共享。这允许iOS设备使用单一标识符识别任何具有单一区域的商店。每个特定的商店,旧金山,巴黎,还有然后指定一个唯一的主值,允许设备识别包含在内特定的存储。在每个单独的商店中,部门都有单独的小值这些都是为了让设备上的应用更容易识别部门。
通过这些信息,iOS设备可以识别它何时进入或离开了其中一家商店,它是哪个特定的商店,以及用户可能所在的部门。这些值由部署信标设备的人员或组织确定。uuid和major &小值没有在苹果注册。
iBeacon依赖于BLE,因此需要iPhone 4S(或更高版本)、iPod touch(第五代)、iPad(第三代及以后)或iPad mini。
有关将iBeacon技术整合到产品中的更多细节,您需要获取苹果的授权请访问https://developer.apple.com/ibeacon申请iBeacon许可证。
iBeacon软件-核心位置api
在iOS 7之前,核心位置使用地理位置定义的区域(纬度和经度)和半径,称为“地理围栏”。iBeacon的灵活性达到了一个新的水平用标识符定义区域。这允许信标被附加到未绑定的对象上到一个地方。例如,信标设备可以用来设置一个区域像餐车或游轮上的可移动物体。而且,可以使用相同的标识符多设备使用。这将使零售连锁店能够在所有地点使用信标并允许iOS设备知道它何时进入其中任何一个。
隐私和位置
因为iBeacon是Core Location的一部分,所以需要相同的用户授权
使用。当应用程序尝试使用时,用户将看到相同的位置授权警告
iBeacon api:
在CoreLocation中使用信标区域api的应用程序将出现在设置应用程序下隐私>位置服务和用户可以允许或拒绝应用程序访问iBeacon功能在任何时候。
此外,任何与iBeacon相关联的蓝牙包被排除在CoreBluetooth api之外。
与地理围栏区域监控一样,在主动使用时,状态栏将显示一个空心箭头。使用测距时,状态栏将显示实心位置箭头。
iBeacon精度
为了确保有效的用户体验,重要的是要考虑信标信号是如何被检测到并用于确定准确性的。当iOS设备检测到信标的信号时,它使用信号强度(RSSI,或接收信号强度指示)来确定与信标的接近程度,以及估计接近程度的准确性。信号越强,iOS就越相信信标离得越近。信号越弱,iOS对信标距离越不确定。
要理解准确性,最好的办法是把它与当今iOS中的GPS工作方式联系起来。当一个iOS
设备可以清晰地接收GPS信号,例如,当一个设备在户外,与轨道上的GPS卫星没有阻碍的视线时,你的位置就能更准确地确定。这很容易在Maps应用程序中看到,其中位置精度由围绕当前位置指示器的蓝色圆圈表示。如果设备在室内或卫星的视线受到阻碍,一个大的蓝色圆圈表示精度较低。也就是说,该设备可以位于蓝色圆圈内的任何地方。随着卫星视线的改善(例如,该设备被放在室外或从背包中取出),精确度也会提高,用一个更小的蓝色圆圈表示。有了更好的接收信号强度,设备可以缩小误差范围,并对其位置更有信心。
使用iBeacon技术的设备接收信号时,信号强度通常与设备与信标的距离有关。在理想的情况下(即设备天线和信标之间的视线不受阻碍),人离得越近,结果越准确。
如图1所示,当设备远离信标时,信号强度会比接近信标时低。由于这种减弱的信号强度,iOS对信标接近估计的准确性没有很高的信心。这类似于上面GPS示例中的蓝色大圈。
当设备靠近信标时,接收到的信号强度增加,因此接近估计的准确性增加。这类似于GPS例子中较小的蓝色圆圈。如图2所示,距离信标越近的设备,其距离发出信号的信标越近的置信度越高。
然而,就像GPS信号强度会因建筑物或放在背包、钱包或口袋等实物而减弱一样,信标的信号强度也会减弱。信号衰减,或信号强度的损失,可以由许多因素造成。信标周围的物理材料,如图3所示的设备与信标之间的墙,将影响接收到的信号强度。这可能会让设备认为信标比实际距离更远。
人体本身就是一个很好的蓝牙信号衰减器。简单地背对信标(即你的身体位于设备和信标之间的位置)会影响信号强度,从而降低精度。图4显示了当某人处于iOS设备和信标之间时,信号强度减弱。
在构建使用GPS或信标的应用程序时,考虑这种准确性是很重要的。Core Location对象报告的值(CLLocation类中的horizontalAccuracy属性,或CLBeacon类中的accuracy属性)指示了这个级别的不确定性,或误差幅度。两者的单位都是米。该值越大,设备或信标位置的确定性越低。记住,依赖物理周围环境,低精度是不可能的。
区域监测
与现有的geofence区域监控类似,当设备进入或离开由信标定义的区域时,应用程序可以请求通知。当应用程序发出此请求开始监视信标区域时,它必须指定iBeacon公告的UUID。虽然一个应用程序被限制在20个区域被监控,但通过在多个位置使用一个UUID,设备可以轻松地同时监控多个物理位置。使用前面表中所示的零售商店示例,设备可以使用相同的UUID监视3个独立的物理位置(旧金山、巴黎和伦敦)。与地理围栏相比,这种基于uuid的方法的影响是不可低估的:只用一行代码,应用程序就可以在任意数量的对象或位置周围建立监控区域。
除了UUID外,应用程序还可以提供主字段和次要字段,以进一步指定要监视的信标区域。继续我们的零售连锁店示例,如果应用程序仅为信标区域指定UUID,那么当用户进入或离开任何零售商店时,它将收到通知。由于主要字段用于确定特定的商店,如果用户只希望在进入特定商店时得到通知,应用程序可以使用UUID +主要值配置信标区域。或者,用户只对进入商店中的特定部门时得到感兴趣的通知。在这种情况下,应用程序将使用UUID +主值+次要值配置信标。这个粒度级别由应用程序开发人员决定,可以在运行时动态指定。
与现有区域监控一样,当用户进入或退出信标区域时,应用程序将收到通知。如果应用程序当前没有运行(例如,如果它由于设备上的内存压力而终止),那么应用程序将在后台启动并传递通知。一个重要的考虑是,在iOS 7中,如果用户明确禁止后台应用刷新(无论是全局的还是特别针对你的应用),那么你的应用将不再收到区域监控通知。但是,它可以继续使用范围api。
基于蓝牙低功耗,典型的范围将在几十米,这提供了一个比地理围栏区域更准确的监测范围(通常至少在100米左右)。如上所述,地理干扰在室内往往不太准确,因此使用iBeacon技术可以显著改善室内使用情况的区域监测结果。然而,信标的物理定位可能会影响精确度,无论用户是否将设备放在口袋里,或者仅仅是信标在用户前面还是后面,都可能影响进入或离开某个区域的点。
测距
iOS 7引入了一套新的api,可以使用iBeacon技术来确定设备的接近程度,这个过程被称为“测距”。基于常见的使用场景,iOS将过滤器应用于精度估计,以确定与信标的估计接近程度。这个估计是用以下四种接近状态之一表示的:
iBeacon用户体验考虑
尽管接近状态和精度之间存在相关性,但映射不一定是1:1。就拿我们的全国零售商店的例子,其中信标已在整个商店中部署。应用程序可能使用区域监测检测进入商店引发当地通知欢迎用户存储和邀请他们来启动应用程序。为了避免使用户恼火,这个应用程序可能希望只显示这个通知一次,只有第一次用户进入商店。
一旦进入应用程序,一个定制的店内界面就会呈现出来。如果iBeacon广告中包含的主要值代表了特定的商店位置,那么应用程序就会立即知道用户所在的商店。应用程序在最前面,设备在用户手中,屏幕打开,这是开始搜索商店中所有信标的理想情况。大型家装商店往往有许多通道和部门。信标位于每个通道的末端和部门内部,应用程序应该能够使用可以看到的信标的邻近状态,应用程序可以在地图上显示用户的大致位置。
尽管这种例子的很多情形可能导致附近或者即时的可接近状态(例如,如果用户把他们的iPhone对着一个有信标设备的特定显示屏)由于实体物品(通常是金属货架、大而笨重的展示物品等)或商店里的其他顾客,该应用程序可能只能看到Far的近似值。在这种情况下,应用程序可能会显示一个突出显示附近信标信息的界面,但不会将用户锁定在特定的信标上。相反,应用程序可能想让用户选择最相关的项目(因为他们的兴趣或因为他们可以很容易地识别哪个信标实际上是最近的)。
存折集成
存折卡也可以利用带有iBeacon技术的设备。
通过包含信标的UUID, Passbook通行证可以在信标所在区域内变得相关。他定位了你的pass的locations数组中指定纬度和经度值的方法相同,您可以在pass的信标键中指定UUID和(可选地)主值和次值作为数组。
部署iBeacon
在准备部署基于iBeacon技术的任何实现时,需要仔细评估解决方案的实际性能。
物理限制
iBeacon设备使用低能量蓝牙来广播信号。BLE基于2.4 GHz频率,因此受到各种物理材料,如墙、门或其他物理结构的衰减。2.4 GHz的频率也会受到水的影响,这意味着人体也会影响信号。注意这点很重要,因为当蓝牙信号衰减或减弱时,会影响iOS设备接收到的信号强度。正如上面所讨论的,当接收到的信号强度降低时,一台iOS设备到ibeacon设备评估可接近的能力会减弱。
校准iBeacon
为了提供最佳的用户体验,在部署环境中执行校准非常关键。在安装每个信标时,应执行校准步骤。核心定位使用一个估计模型,需要在距离信标1米的距离进行校准。要执行此校准,您应该:
• 安装信标并发出信号。
• 使用运行iOS 7或更高版本的iPhone或iPod touch,并带有蓝牙4.0收音机,在1米的距离重复采样信号强度至少10秒。在进行这些信号强度数据时,应将设备保持纵向,使设备的上半部分保持通畅。
•在30cm的直线上缓慢前后移动设备,保持方向,与测量设备保持等距离(见下图)
• 在校准过程中,收集CLBeacon的rssi属性中报告的值。
• 将采集到的rssi值取平均值,得到测量功率值。
• 将此测量功率值应用于信标。请参阅所使用的信标的详细信息,因为它们可能因制造商而不同。
如上所述,物理环境会影响信号强度。由于安装位置之间的环境几乎肯定是不同的,所以对每个安装的信标重复这些步骤是很重要的。
最佳实践
为了获得最佳的用户体验和成功的部署,请务必考虑以下最佳实践:
•不希望在后台使用测距API。为了达到最好的效果,应该在你的应用最前面,用户正在与你的应用进行交互时使用测距。
•当检测到使用测距api和多个带有iBeacon技术的设备时,核心位置将按照最接近的猜测顺序报告信标。由于上面讨论的信号衰减问题,这个顺序可能是不正确的。例如,如果两个信标连接到物体上,并被iOS设备检测到,但其中一个信号比另一个信号强得多,但物理距离较远,这可能会导致较远的信标首先被报告。应用程序应该仔细检查信标报告的接近区域,如果所有信标都在Far区域,然后考虑向用户显示两个物体在附近被探测到,并允许用户选择他们感兴趣的物体。
•利用位置授权警告中的可选文本字段来解释为什么应用程序要求使用用户的位置。如果你的应用程序有新人引导屏幕,解释为什么用户应该同意让应用程序知道他们的位置。你可以在你的应用信息中使用NSLocationUsageDescription键指定这个可选文本。plist文件。
•如果你购买的是带有iBeacon技术的第三方设备,了解这些设备如何配置以及由谁来进行安装和维护是很重要的。
•在现场部署信标设备时,一定要培训任何可能需要与信标设备互动的员工。例如,如果你正在部署一个零售解决方案,确保你的零售销售助理接受过关于iOS应用程序如何与设备交互、对你的客户有什么好处、支持的iOS设备型号、故障排除建议等方面的培训。
•如果您计划在您的地点安装标识,建议您拥有iBeacon商标和标识许可证。请访问https://developer.apple.com/ibeacon申请iBeacon license。
常见问题及答案
问:我能在室内使用iBeacon技术在地图上精确显示用户的位置吗?
答:由于信号强度和部署环境的变化等问题,iBeacon技术不打算用于特定位置的识别。它应该能够提供房间级别的精度,但要构建成功的部署,还需要考虑许多因素。为了提供良好的用户体验,需要检查信标的数量、它们的位置、预期用例以及许多其他因素。
问:我如何使用iBeacon技术防止其他应用程序检测到我的设备?
答:为了让应用程序能够响应传输iBeacon广告的设备,它必须知道广告所包含的UUID。因为一个信标设备使用BLE发广播,它的UUID就有可能在空中被“嗅探”,一旦这个UUID被知道,它就可以被其他应用程序使用。
问:使用iBeacon技术是否会危及用户的私人数据?
答:iBeacon广播只包含UUID、主要值和次要值。这是单向广播;信标设备与iOS设备之间没有通过iBeacon技术进行双向通信,因此信标无法通过iBeacon技术接收用户信息。应用程序如何回应iBeacon广告引发的通知是另一回事,但这与使用现有的地理围栏技术没有什么不同。
问:我可以使用iOS设备发布iBeacon广播吗?
答:是的。任何应用程序都可以使用核心蓝牙api发送iBeacon广播。
问:我的应用程序在后台时,我可以使用iOS设备发布iBeacon广播吗?
答:不能。要让iOS设备发布iBeacon广播,要求使用该功能的应用程序必须放在最前面,屏幕必须打开,设备必须解锁。
问:如果我的应用程序开始监测信标区域,这将如何影响电池性能?
答:支持iBeacon的iOS设备可以高效监控后台的iBeacon区域,功耗很小。与在后台持续运行正常的位置更新相比,监控iBeacon区域需要的电力要少得多。