在用例方面,didEnterRegion和didRangeBeacons之间的确切区别是什么?我的意思是当我应该实现didEnterRegion / didExitRegion以及何时应该实现didRangeBeacons?
每个委托方法的确切功能是什么?从苹果的文档来看,它不是很清楚。
- (void)locationManager:(CLLocationManager *)manager
didEnterRegion:(CLRegion *)region
{
}
和
- (void)locationManager:(CLLocationManager *)manager
didRangeBeacons:(NSArray *)beacons
inRegion:(CLBeaconRegion *)region
{
}
答案 0 :(得分:6)
didEnterRegion
一次。退出该区域后(即信标不再可见)将调用didExitRegion
,如果您重新进入该区域,则会再次调用didEnterRegion
。
didRangeBeacons
,同时显示您正在测距的信标,为您提供更新的邻近信息。
一个常见的策略是监视信标区域,一旦调用didEnterRegion
,就开始测量更新信标,在调用didExitRegion
后停止测距。
答案 1 :(得分:1)
仅使用邻近UUID定义的CLBeaconRegion
,或邻近UUID和主要ID可能对应于部署中的多个物理信标(我将在此处称为“部分限定区域”)。
didEnterRegion
会在设备首次进入与CLBeaconRegion
匹配的一个或多个信标附近时通知,但不会详细说明哪些匹配的信标在附近。仅当所有匹配的信标超出范围时才会调用didExitRegion
。
输入区域后,测距信标有两种用途:
此信息作为didRangeBeacons
个对象的数组提供给CLBeacon
。注意,信标集可以随着时间而改变而设备不离开该区域并且接收didExitRegion
(只要至少一个匹配的信标在范围内,该设备在该区域中)。这意味着使用部分限定区域但仍关心特定信标的应用程序需要处理didRangeBeacons
的重复调用。
CLBeacon
个对象中提供的邻近度信息。 即使使用完全合格的区域,这也可能是相关的。当设备在区域内移动时,接近度会发生变化,因此需要处理didRangeBeacons
的重复调用。