Я работал над приложением, регистрирующим регион с основным местоположением для мониторинга.
self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:proximtyId] identifier:@"com.hospitalintegration.region" ];
if(self.beaconRegion){
[self.locationManager startMonitoringForRegion:self.beaconRegion];
[self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
}
[self.locationManager startUpdatingLocation];
Затем вызывается didStartMonitoringForRegion, и я запрашиваю состояние региона в этом методе:
- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region {
if(self.beaconRegion){
[self.locationManager requestStateForRegion:self.beaconRegion];
[self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
}
}
в iOS 12, это, кажется, работает абсолютно нормально, вызывается didDetermineState, и я получаю мойжелаемый результат. но на iOS 13 didDetermineState не вызывается, и всегда MonitoringDidFailForRegion вызывается с ошибкой. Приложение превысило максимальное количество регионов, которые оно может контролировать одновременно. Мониторинг также может быть неудачным, если радиус области слишком велик.
То, что я проверил, здесь не проблема. Регион небольшой, так как он работает на iOS 12, и я отслеживаю только 1 регион, я проверил количество отслеживаемых регионов, и он равен 1. Итак, я не понимаю, что здесь не так.