2015-09-09 83 views
0

我正在使用iBeacons。我有多个信标,每个信标具有相同的UUID,主要但不同的次要值。这两个设备都是有区分的,但它们并没有一起被接收,locationManager:didRangeBeacons:inRegion:委托回调“beacons”数组一次仅包含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]; 
} 

我想拥有所有在范围内的一个回调中的信标

如何使用不同的小的单一区域,标识值的所有信标

任何帮助APPR 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

您可以使用BeaconManagerDelegatedidFindBeacon回调到附近观察到信标。如果它们具有相同的UUID,它将获得所有信标。