2

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

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

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

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

这是预期的行为吗?

peripheralManager 需要时间来放松吗?

4

1 回答 1

3

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

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

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

于 2013-08-19T14:03:52.430 回答