2016-09-06 2 views
8

В моем приложении я использую мониторинг зоны Beacon в CoreLocation. Приложение устанавливает 2 proximityUUID в качестве региона (у них разные идентификаторы), и начинается в следующем порядке.Ranging Beacons in iOS 10

#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]; 
     } 
    } 
} 

Он работает в прошивке 8 и 9 прошивки, но он не работает в прошивке 10.

[в прошивке 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?

+2

В iOS 10 определенная разница с радиомаяками. Я получаю очень непоследовательные результаты с появлением коротких маяков, а затем никогда не изменяющимися в функции didRangeBeacons. – davidethell

+0

Благодарим вас за проб и информацию! Я жду, чтобы вас разрешили в обновлении ... –

+0

Вы отправили радар для этой проблемы? –

ответ

0

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

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

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

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

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