2015-09-09 1 views
0

Я работаю с iBeacons. У меня есть несколько маяков, каждый маяк имеет одинаковый UUID, майор, но разные второстепенные значения. Оба устройства имеют дальность, но они не принимаются вместе, - locationManager: didRangeBeacons: inRegion: массив обратных вызовов делегата «маяки» содержит только 1 маяк за раз.Несколько маяков didRangeBeacons делегировать вызов, возвращающий только один маяк за один раз

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

Это как код для мониторинга и измерения дальности маяки

// Initialize and monitor regions 
for (NSString *serviceUUID in _serviceUUIDs) { 
    // Initialize region 
    NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:serviceUUID]; 
    CLBeaconRegion *appBeaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid major:major minor:minor identifier: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]; 
} 

Я хочу, чтобы все маяки, которые находятся в диапазоне в пределах одного обратного вызова

Как я использовать одну область с различным минором, значения идентификаторов для всех маяков

любых помогает проверу eciated ..

Благодарности

ответ

0

Это код, который я написал для этой цели: -

// in ApplicationdidFinishLaunchingWithOptions 
    let beaconID = NSUUID(UUIDString: "ADBD15B8-9A2F-492F-BB26-C7C92E05CAD3") 
      let regionIdentifier = "humra.ibeacons" 
      let beaconRegion = CLBeaconRegion(proximityUUID: beaconID!, identifier: regionIdentifier) 
      if locationManager.respondsToSelector("requestAlwaysAuthorization") 
      { 
       locationManager.requestAlwaysAuthorization() 
      } 
      locationManager.delegate=self 
      locationManager.pausesLocationUpdatesAutomatically=false 
      locationManager.startMonitoringForRegion(beaconRegion) 
      locationManager.startRangingBeaconsInRegion(beaconRegion) 
      locationManager.startUpdatingLocation() 


     func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) { 
      NSLog("didRangeBeacons"); 
      let message:String = "" 

      if(beacons.count > 0) { 
       let nearestBeacon:CLBeacon = beacons[0] as CLBeacon 
       closestBeacon=nearestBeacon 

      } else { 
    //   message = "No beacons are nearby" 
      } 

      NSLog("%@", message) 
      sendLocalNotificationWithMessage(message) 
     } 
1

Вы можете использовать BeaconManagerDelegate «s didFindBeacon обратного вызова для наблюдения маяки поблизости. Это даст все маяки, если они имеют одинаковый UUID.

Смежные вопросы