iOS-приложение не может обнаружить его внутри CLBeaconRegion - PullRequest
0 голосов
/ 02 июля 2019

Мы приобрели несколько маяков у 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), но массив пуст.

Какие шаги я могу предпринять, чтобы устранить эту проблему? Я в недоумении от того, что происходит за кулисами

1 Ответ

0 голосов
/ 03 июля 2019

Я использовал инициализатор для CLBeaconRegion, который принимает старшее и младшее значение и передавал 0 для них, хотя маяки передавали ненулевые значения. Если вы просто пытаетесь настроить и запустить маяки и сфокусироваться только на UUID, помните, что вам нужно на время исключить эти основные и второстепенные значения.

...