CBPeripheralManager 延迟停止广告/位置管理器范围停止 iBeacon

Posted

技术标签:

【中文标题】CBPeripheralManager 延迟停止广告/位置管理器范围停止 iBeacon【英文标题】:CBPeripheralManager Delays stopAdvertising / Location Manager ranges stopped iBeacon 【发布时间】:2013-08-19 13:57:42 【问题描述】:

我正在使用两台 ios 设备,其中一台设置为 iBeacon。

我正在用第二台 iOS 设备测量信标,并可以通过以下方式获取其状态:

-(void)locationManager:(CLLocationManager *)manager
       didRangeBeacons:(NSArray *)beacons
              inRegion:(CLBeaconRegion *)region

当我停止在 iBeacon 上投放广告时,第二台设备上的位置管理器会继续范围/识别 iBeacon 5-10 秒。

这是预期的行为吗?

peripheralManager 需要时间来结束吗?

【问题讨论】:

【参考方案1】:

我有一个作为 iBeacons 运行的专用 BTLE 硬件的设置。 实际上,停止调用locationManager:didRangeBeacons:inRegion: 需要 20 到 30 秒,然后再调用 locationManager:didExitRegion:

据我了解,这是有道理的,这正是 CL 正在寻找的,因为该设备需要一些时间来确保它真正退出该区域。 另一方面,它在您启动信标后几乎立即开始测距信标。没有理由等待开始测距。

如果您检查信标的邻近属性,您会注意到在那段时间它是CLProximityUnknown。也许你可以用这种状态做一些事情来做你需要的事情。

【讨论】:

以上是关于CBPeripheralManager 延迟停止广告/位置管理器范围停止 iBeacon的主要内容,如果未能解决你的问题,请参考以下文章

终止连接 CBPeripheralManager 端

获取 CBPeripheralManager 订阅的 Centrals

为啥我的 CBPeripheralManager 有广告但无法被发现?

CBPeripheralManager AddService 上的 iOS 崩溃断言失败:

CBPeripheralManager startAdvertising 在 OS X yosemite 上不起作用

AnyLogic:停止延迟块中特定代理的延迟