Мы приобрели несколько маяков у kontakt.io и пытаемся настроить базовое обнаружение, работая с нашим приложением для iOS. Bluetooth включен, и мое приложение имеет разрешения «Всегда». Я скачал приложение Locate и ввел UUID близости (который они все используют), и это приложение видит маяки, которые физически находятся рядом со мной. Методы делегата в моем приложении работают не так, как ожидалось.
Мы создаем CLBeaconRegion и вызываем следующее:
[self.locationManager startMonitoringForRegion:newRegion];
[self.locationManager startRangingBeaconsInRegion:(CLBeaconRegion*) newRegion];
Затем, после короткого перерыва, позвонив
[self.locationManager requestStateForRegion:newRegion];
Для случая мониторинга наш метод делегата:
- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(nonnull CLRegion *)region {
вызывается. Я подтвердил, что UUID в параметре региона соответствует тому, что я передал для мониторинга. Но состояние всегда либо CLRegionStateOutside, либо CLRegionStateUnknown. Я ожидаю, что это будет CLRegionStateInside.
Для ранжирования, метод делегата:
-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
вызывается (как-то? Не уверен, что это из-за requestStateForRegion), но массив пуст.
Какие шаги я могу предпринять, чтобы устранить эту проблему? Я в недоумении от того, что происходит за кулисами