4

就用例而言,didEnterRegion 和 didRangeBeacons 之间的确切区别是什么?我的意思是什么时候应该实施 didEnterRegion/didExitRegion 以及什么时候应该实施 didRangeBeacons ?

每个委托方法的确切功能是什么?从苹果的文档来看,还不是很清楚。

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

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

2 回答 2

6

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

didRangeBeacons在您正在测距的信标可见时重复调用,为您提供更新的接近度信息。

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

另请参阅 -位置编程指南

于 2014-10-08T09:26:04.213 回答
1

仅使用CLBeaconRegion邻近 UUID 或邻近 UUID 和主要 id 定义的可能对应于您的部署中的多个物理信标(我将在此处将这些称为“部分限定区域”)。

didEnterRegion当设备第一次进入与 匹配的一个或多个信标附近时通知CLBeaconRegion,但不详细说明附近有哪些匹配的信标。didExitRegion仅当所有匹配的信标超出范围时才调用。

进入区域后,测距信标有两种用途:

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

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

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

即使使用完全限定的区域,这也可能是相关的。当设备在该区域内移动时,随着接近度的变化,didRangeBeacons需要处理重复调用。

于 2014-10-09T13:01:35.697 回答