0

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

Apple 的经验法则是对我的所有物理位置使用相同的 UUID:

UUID 由所有位置共享。

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

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

我找到了使用给定 UUID 设置区域的调用,但没有找到检测到 UUID 时返回的对象以及返回的字段。

当 iOS 检测到带有给定的信标时,应用程序在哪里获取major/值?minorUUID

4

1 回答 1

3

使用监控 API 时,您只能CLBeaconRegionCoreLocation. 由此类定义的信标区域通常不表示单个信标,而是表示基于通配符标识符的一系列信标。

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

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

由于您需要背景检测,因此同时进行测距和监控非常重要。即使您因为缺少特定的信标信息而没有在您的监控回调中添加任何内容,您也需要进行监控以让您的应用程序在新的信标检测时在后台唤醒。然后,在您的应用再次暂停之​​前,您将收到大约 10 秒的测距回调。

于 2016-01-18T11:57:19.103 回答