2015-04-29 4 views
0

У меня есть набор маяков Estimote. Когда я использую оценку sdk, я могу варьироваться для маяков и использовать ее. Но проблема в том, что когда я использую SDK для iOS для мониторинга и ранжирования, didRangeBeacons вообще не вызывается.didrangebeacons не вызывается, хотя didDetermineState называется

Я начал работать, как показано ниже. Когда я проверил использование точки останова, вызывается функция.

- (void) locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region 
{ 
    switch (state) { 
     case CLRegionStateInside: 
      [self.beaconManager startRangingBeaconsInRegion:self.beaconRegion]; 
      NSLog(@"Region CLRegionStateInside"); 

ответ

0

Пожалуйста, убедитесь, что вы прошли через следующий перечень:

  1. Вы ввели NSLocationAlwaysUsageDescription в вашем info.plist

  2. Ваше имущество self.beaconRegion является CLBeacon региона ВОЗ UUID соответствует UUID, который вы хотите обнаружить.

  3. Ваше устройство iPhone 4S или новее, на прошивкой 7 или выше, и имеет Bluetooth включен

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

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(nonnull CLRegion *)region { 
    CLBeaconRegion *beaconRegion = (CLBeaconRegion *)region; 
      if (beaconRegion.major && beaconRegion.minor) { 
      } else { 
       switch (state) { 
        case CLRegionStateUnknown: 
         // Handle this case when bluetooth is off. 
         break; 
        case CLRegionStateInside: 
         NSLog(@"Inside %@", region); 
         if (![self.locationManager.rangedRegions containsObject:beaconRegion]) { 
          [self.locationManager startRangingBeaconsInRegion:[[CLBeaconRegion alloc] initWithProximityUUID:beaconRegion.proximityUUID identifier:beaconRegion.proximityUUID.UUIDString]]; 
         } 
         break; 
       case CLRegionStateOutside: 
        NSLog(@"Outside %@", region); 
        break; 
      } 
     } 
    } 

Вам нужно всего лишь набирать UUID, потому что это заберет все маяки, соответствующие UUID, независимо от основных и второстепенных. Также обратите внимание, что вы должны только попытаться начать ранжирование, если вы еще не выбрали диапазон, чтобы избежать дополнительного вызова функции.

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