Начиная маяков в iOS 10

В моем приложении я использую Beacon Region Monitoring в CoreLocation. Приложение устанавливает 2 бесконтактный идентификатор региона (они имеют разные идентификаторы) и начинает ранжирование следующим образом.

#pragma mark - CLLocationManagerDelegate

(void)locationManager:(CLLocationManager *)manager
didEnterRegion:(CLRegion *)region {
     [self.locationManager requestStateForRegion:(CLBeaconRegion *)region];
}

- (void)locationManager:(CLLocationManager *)manager 
didExitRegion:(CLRegion *)region {
     [self.locationManager stopRangingBeaconsInRegion:(CLBeaconRegion *)region]; 
}

- (void)locationManager:(CLLocationManager *)manager
didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region{ 
    for(CLBeacon* b in beacons){
         //output only previous beacon if it's before regionout to previous region
         NSLog(@"%@",b);
    }
}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
     //error
}

- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region{ 
   if(state == CLRegionStateInside){
        if ([region isMemberOfClass:[CLBeaconRegion class]] && [CLLocationManager isRangingAvailable]){
            [self.locationManager startRangingBeaconsInRegion:(CLBeaconRegion *)region];
        }
  }
}

Он работает в iOS 8 и iOS 9, но не работает в iOS 10.

[в iOS 8 / iOS 9]

1.broadcast beacon1

2.[app]didRangeBeacons (beacon1)

3.stop beacon1 and broadcast beacon2

4.[app]didRangeBeacons (beacon2)

[iOS 10]

1.broadcast beacon1

2.[app]didRangeBeacons (beacon1)

3.stop beacon1 and broadcast beacon2

4.[app]didRangeBeacons (**beacon1**)

Это ошибка iOS 10?

1 ответ

Хорошо, у меня была та же проблема в Swift 3, но я решил ее.

Кажется, есть две вещи (которые, вероятно, напрямую связаны):

  • для iOS10 рекламный интервал маяка может быть установлен слишком высоким (установите его примерно на 200 мс, а затем он должен работать как на 9, так и на 10, как рекомендовано Dantastic на Macrumors)

  • как я снова заработал: я протестировал его на iPad с iOS 9.3.5 и мне нужно было изменить цель развертывания на 9.3. Это показало, что он снова работает на моем iPad с iOS 9, но... также разрешил его на моих устройствах iOS 10.

Другие вопросы по тегам