didEnterRegion和didRangeBeacons之间的区别

didEnterRegion和didRangeBeacons在用例方面有什么区别,我的意思是当我应该实现didEnterRegion / didExitRegion和什么时候应该实现didRangeBeacons?

每个委托方法的确切function是什么? 从苹果的文档,这不是很清楚。

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region { } 

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

当您跨越区域的阈值(即检测到信标)时, didEnterRegion将被调用一次。 一旦你退出该区域(即信标不再可见), didExitRegion将被调用,然后didEnterRegion将再次被调用,如果你重新进入该地区。

didRangeBeacons被重复调用,而你正在测量的信标是可见的,给你更新的邻近信息。

一个常见的策略是监视信标区域,并且一旦didEnterRegion ,就开始对该信标进行更新的测距,一旦didExitRegion被调用就停止测距。

另请参阅 – 位置编程指南

用邻近UUID或邻近UUID和Major id定义的CLBeaconRegion可能对应于部署中的多个物理信标(我将在这里称之为“部分合格区域”)。

didEnterRegion通知设备何时首次进入与CLBeaconRegion匹配的一个或多个信标的邻近CLBeaconRegion ,但没有详细说明哪个匹配的信标在附近。 只有当所有匹配的信标超出范围时才会调用didExitRegion

一旦进入一个地区,测距信标有两种用途:

  1. 获取与部分合格区域相对应的附近信标的详细信息。

该信息作为CLBeacon对象的数组提供给didRangeBeacons 。 请注意,信标集可以随时间变化而无需设备离开区域并接收didExitRegion (只要至less一个匹配的信标在范围内,设备在区域中)。 这意味着使用部分合格区域但仍然关心特定信标的应用程序需要处理didRangeBeacons的重复调用。

  1. 获取CLBeacon对象中提供的邻近信息。

即使使用完全合格的区域,这也是相关的。 当设备在区域内移动时,接近度发生变化,需要处理didRangeBeacons的重复调用。

Interesting Posts