2014-01-23 12 views
4

여기 내 코드입니다 (내 코드를 참조하십시오) :여러 개의 비콘 영역 모니터링이 작동하지 않고 있지만 개발자가 가능하다고 말했습니까? 생각?

// Initialize and monitor regions 
    for (NSString *serviceUUID in _serviceUUIDs) { 
     // Initialize region 
     NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:serviceUUID]; 
     CLBeaconRegion *appBeaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid identifier:SERVICE_IDENTIFIER]; 
     // Specify notifications 
     appBeaconRegion.notifyEntryStateOnDisplay = YES; 
     appBeaconRegion.notifyOnEntry = YES; 
     appBeaconRegion.notifyOnExit = YES; 
     // Add to regions 
     [_appBeaconRegions addObject:appBeaconRegion]; 
     // Begin monitoring region and ranging beacons 
     [_locationManager startMonitoringForRegion:appBeaconRegion]; 
     [_locationManager startRangingBeaconsInRegion:appBeaconRegion]; 
    } 

가 명확히하기 위해, "_serviceUUIDs을" 다섯 UUID를 포함하는 NSStrings의 NSArray를합니다. 나는 테스트를 위해 Locate iBeacons를 사용하고 추가 된 마지막 영역 만 탐지된다는 것을 발견했습니다. 그것은 또한 모니터링되는 유일한 것으로 보입니다. 나는 "_locationManager.monitoredRegions"을 검사하여 이것을 결정했다.

여러 개의 비콘 영역을 모니터링 할 수 있다는 것을 나타내는 여러 스레드가 있습니다. 어떤 사람이 나를 위해 일하지 않는 이유에 대한 생각을 가지고 있습니까? 감사!

답변

13

당신은 여러 지역을 모니터링 할 수 있지만, 각 지역 해야는 고유 identifier 있습니다. 각 지역에 대해 동일한 상수 SERVICE_IDENTIFIER을 전달하는 것 같습니다. 각각에 대해 고유 한 값으로 설정해보십시오.

+0

내가 한 것은 문자열로 UUID, 메이저 및 마이너 값 (문자열)을 연결하고 그 사이의 쉼표 문자열로 식별자로 사용하는 것입니다. 간단하고 안정적으로 고유합니다. 메이저 또는 메이저/마이너가있는 영역을 만들지 않으면 식별자에서 제외하십시오. –

+0

감사합니다! 그것은 작동합니다! –