在监控区域时,iBeacon主要/次要值是否可用?

时间:2016-01-18 11:03:16

标签: ios objective-c ibeacon bluetooth-lowenergy region-monitoring

我正在尝试构建一个测试应用程序,该应用程序将检测部署在几个物理位置的给定iBeacon集。检测应该在后台完成,并按照一定的逻辑调用服务器。

Apple's rule of thumb为我的所有物理位置使用相同的UUID:

  

UUID由所有地点共享。

     

这允许iOS设备使用单个标识符来识别具有单个区域的任何商店。

     

然后为每个特定商店(旧金山,巴黎和伦敦)分配一个唯一的主要价值,允许设备识别哪个特定商店   它在。

我找到了the call for setting a region with a given UUID,但是在检测到UUID时没有找到返回的对象,以及返回了哪些字段。

当iOS检测到具有给定major的信标时,应用在哪里获得minor / UUID值?

1 个答案:

答案 0 :(得分:3)

使用监控API时,您只能在CoreLocation的回车/退货回调中获得CoreLocation个对象。由该类定义的信标区域通常不代表各个信标,而是基于通配符标识符的一系列信标。

因此,如果您在区域定义中使用通配符(通常情况下),您实际上无法查看哪个特定信标触发了区域条目。要解决此问题,您必须同时结合监控和测距API 。如果您同时监控和范围,didRangeBeacons beacons: [CLBeacon] inRegion region: CLBeaconRegion将在CLBeacon方法中为您提供回调,其中包含所见的所有\Sexpr{}个对象的数组。

但是,由于信标数组的回调每秒到达一次,因此,如果需要,您将需要添加自定义逻辑,以便在信标首次出现时执行一次。

由于您需要背景检测,因此同时执行 测距和监控非常重要。即使您因为缺少特定的信标信息而未在监控回调中放置任何内容,您也需要进行监控,以便在后台通过新的信标检测唤醒您的应用。然后,在您的应用再次暂停之​​前,您将获得大约10秒的测距回调。