我正在尝试构建一个测试应用程序,该应用程序将检测部署在几个物理位置的给定iBeacon集。检测应该在后台完成,并按照一定的逻辑调用服务器。
Apple's rule of thumb为我的所有物理位置使用相同的UUID:
UUID由所有地点共享。
这允许iOS设备使用单个标识符来识别具有单个区域的任何商店。
然后为每个特定商店(旧金山,巴黎和伦敦)分配一个唯一的主要价值,允许设备识别哪个特定商店 它在。
我找到了the call for setting a region with a given UUID,但是在检测到UUID时没有找到返回的对象,以及返回了哪些字段。
当iOS检测到具有给定major
的信标时,应用在哪里获得minor
/ UUID
值?
答案 0 :(得分:3)
使用监控API时,您只能在CoreLocation
的回车/退货回调中获得CoreLocation
个对象。由该类定义的信标区域通常不代表各个信标,而是基于通配符标识符的一系列信标。
因此,如果您在区域定义中使用通配符(通常情况下),您实际上无法查看哪个特定信标触发了区域条目。要解决此问题,您必须同时结合监控和测距API 。如果您同时监控和范围,didRangeBeacons beacons: [CLBeacon] inRegion region: CLBeaconRegion
将在CLBeacon
方法中为您提供回调,其中包含所见的所有\Sexpr{}
个对象的数组。
但是,由于信标数组的回调每秒到达一次,因此,如果需要,您将需要添加自定义逻辑,以便在信标首次出现时执行一次。
由于您需要背景检测,因此同时执行 测距和监控非常重要。即使您因为缺少特定的信标信息而未在监控回调中放置任何内容,您也需要进行监控,以便在后台通过新的信标检测唤醒您的应用。然后,在您的应用再次暂停之前,您将获得大约10秒的测距回调。