didRangeBeacons возвращает только один iBeacons за раз

Я пытаюсь обнаружить несколько iBeacons. Я разместил три iBeacons рядом с ними.

Проблема его обнаружения один за другим. Не в массиве. он должен вернуть 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");


    }

Консоль О/п

Start
57726
Finish

Start
53482
Finish

Start
31901
Finish

Start
57726
Finish

person Sunny Shah    schedule 07.06.2014    source источник


Ответы (1)


Если вы посмотрите на сигнатуру метода, вы увидите, что это -

 didRangeBeacons:inRegion:

Обратите внимание на «inRegion» — ваши три маяка находятся в разных регионах, поэтому вы получаете отдельные вызовы для каждого региона.

Если вы измените инициализацию своего региона на -

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

и удалите два других региона, тогда вы получите уведомление для всех трех маяков в одном регионе. Вам нужно будет изучить каждый мажор и минор в отдельности, чтобы определить, что есть что.

Если вы назначите всем маякам один и тот же мажор, вы можете указать мажор в своем регионе, и вы будете получать уведомления только о «ваших» маяках, а не обо всех маяках Estimote (если только кто-то другой не выберет тот же мажор, что и...)

person Paulw11    schedule 07.06.2014