2014-06-07 3 views
1

여러 개의 iBeacons를 감지하려고합니다. 나는 그들 옆에 3 개의 iBeacons를 놓았다.didRangeBeacons는 한 번에 하나의 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"); 


    } 

콘솔 O/P

Start 
57726 
Finish 

Start 
53482 
Finish 

Start 
31901 
Finish 

Start 
57726 
Finish 

답변

5

당신이 메서드 서명 보면 당신은 볼 수는있다 -

didRangeBeacons:inRegion: 

'inRegion'참고 - 세 개의 표지는 별도의 영역에 있으므로 각 지역에 대한 개별 호출이 제공됩니다. 당신이 해당 지역의 초기화를 변경하는 경우

은 -

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

다른 두 지역을 삭제, 당신은 같은 지역에서 세 비콘에 대한 알림을 받게됩니다. 각 전공과 부전공을 개별적으로 조사하여 어느 것이 어떤 것인지를 결정해야합니다.

모든 신호대에 동일한 전공을 부여하면 해당 지역의 전공을 구체적으로 지정할 수 있으며 다른 누군가가 동일한 전공을 선택하지 않는 한 모든 "신호음"신호가 아닌 "신호음"에 대해서만 통보됩니다. ..)

+0

예. 세 개의 iBeacons가 모두 있습니다. –

관련 문제