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 订阅的 Centrals
为啥我的 CBPeripheralManager 有广告但无法被发现?
CBPeripheralManager AddService 上的 iOS 崩溃断言失败: