1

複数の iBeacons を検出しようとしています。それらの近くに 3 つの iBeacon を配置しました。

1つずつ検出する問題。配列ではありません。3 つの iBeacons を返す必要があります。

self.beaconManager = [[ESTBeaconManager alloc] init];
self.beaconManager.delegate = self;

self.region1 = [[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID major:21668 minor:53482 identifier:@"EstimoteSampleRegion"];

self.region2= [[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_MACBEACON_PROXIMITY_UUID major:3894 minor:57726 identifier:@"EstimoteSampleRegion2"];

self.region3= [[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_IOSBEACON_PROXIMITY_UUID major:13067 minor:31901 identifier:@"EstimoteSampleRegion3"];


[self.beaconManager startRangingBeaconsInRegion:_region1];
[self.beaconManager startRangingBeaconsInRegion:_region3];
[self.beaconManager startRangingBeaconsInRegion:_region2];

// 委譲メソッド

 -(void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region {
        //checks bRegion, so you could have it searching for other beacons if you wanted after one is notified

        NSLog(@"Start");
        for (ESTBeacon *iBeacon in beacons) {
            NSLog(@"%@",iBeacon.minor);
        }
        NSLog(@"Finish");


    }

コンソール O/p

Start
57726
Finish

Start
53482
Finish

Start
31901
Finish

Start
57726
Finish
4

1 に答える 1

6

メソッドのシグネチャを見ると、次のようになっていることがわかります -

 didRangeBeacons:inRegion:

「inRegion」に注意してください。3 つのビーコンは別々の地域にあるため、地域ごとに個別の呼び出しを受けています。

地域の初期化を - に変更した場合

self.region1 = [[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID identifier:@"EstimoteSampleRegion"];

他の 2 つのリージョンを削除すると、同じリージョン内の 3 つのビーコンすべてについて通知が届きます。どちらがどちらであるかを判断するには、メジャーとマイナーを個別に調べる必要があります。

すべてのビーコンに同じメジャーを指定すると、地域のメジャーを指定できます。すべての Estimote ビーコンではなく、「自分の」ビーコンについてのみ通知されます (他の誰かが同じメジャーを選択しない限り...)

于 2014-06-07T09:23:55.477 に答える