4

ユースケースに関して、didEnterRegion と didRangeBeacons の正確な違いは何ですか?

各デリゲート メソッドの正確な機能は何ですか? アップルのドキュメントからは、あまり明確ではありません。

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

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

2 に答える 2

6

didEnterRegionリージョンのしきい値を超えたとき (ビーコンを検出したとき) に 1 回呼び出されます。領域を出ると (ビーコンが見えなくなると)didExitRegionが呼び出されdidEnterRegion、領域に再び入ると再度呼び出されます。

didRangeBeacons測距しているビーコンが表示されている間、繰り返し呼び出され、更新された近接情報が提供されます。

一般的な戦略は、ビーコン領域を監視し、呼び出されたらdidEnterRegion、更新のためにそのビーコンのレンジングを開始し、呼び出されたらレンジングを停止することdidExitRegionです。

参照 -ロケーション プログラミング ガイド

于 2014-10-08T09:26:04.213 に答える
1

近接 UUID のみで定義されたCLBeaconRegion、または近接 UUID とメジャー ID は、展開内の複数の物理ビーコンに対応する場合があります (ここでは、これらを「部分的に修飾されたリージョン」と呼びます)。

didEnterRegionは、 に一致する 1 つ以上のビーコンの近くにデバイスが最初に入ったときに通知しますが、CLBeaconRegionどの一致するビーコンが近くにあるかについては詳しく説明しません。didExitRegion一致するすべてのビーコンが範囲外になった場合にのみ呼び出されます。

領域に入ると、レンジング ビーコンには 2 つの用途があります。

  1. 部分的に認定された地域に対応する近くのビーコンの詳細を取得します。

この情報は、オブジェクトdidRangeBeaconsの配列として提供されCLBeaconます。ビーコンのセットは、デバイスが地域を離れて受信することなく、時間の経過とともに変化する可能性があることに注意してくださいdidExitRegion(少なくとも 1 つの一致するビーコンが範囲内にある限り、デバイスは地域内にあります)。これは、部分的に修飾されたリージョンを使用しているが、特定のビーコンを気にかけているアプリケーションは、 の繰り返しの呼び出しを処理する必要があることを意味しますdidRangeBeacons

  1. オブジェクトで提供される近接情報を取得しCLBeaconます。

これは、完全に修飾されたリージョンが使用されている場合でも関連する可能性があります。デバイスがリージョン内で移動すると近接度が変化するため、繰り返される の呼び出しをdidRangeBeacons処理する必要があります。

于 2014-10-09T13:01:35.697 に答える