CoreBluetooth [API MISUSE] CBCentralManager может принимать команды только во включенном состоянии. Ошибка при попытке определить диапазон маяков.

Я пытаюсь установить оценочные маяки в своем приложении. Но когда приложение ранжирует маяки после запуска метода [beaconManager:didRangeBeacons:inRegion:], оно выводит «CoreBluetooth [API MISUSE] CBCentralManager может принимать команды только во включенном состоянии» в консоль отладки, а также я не могу подключиться к маяку для изменения некоторых значений. Я могу ранжировать маяки и считывать значения, которые не требуют подключения к маяку, такие как второстепенный, основной, близость и т. д., но мне также нужно их изменить.

В чем моя проблема?

Заранее спасибо!


person chingi3    schedule 12.06.2014    source источник
comment
В комментарии сказано все: вы не должны вызывать какие-либо API в центральном диспетчере, пока не получите обновление состояния с состоянием Powered On. Основное руководство по программированию Bluetooth содержит много информации о том, как следует использовать API.   -  person allprog    schedule 12.06.2014
comment
stackoverflow.com/questions/23338767 /   -  person Larme    schedule 13.06.2014
comment
Привет! Мы все еще изучаем ошибку в Estimote. Что касается подключения к маякам, пожалуйста, уточните. Вы вошли в свою учетную запись Estimote, когда пытаетесь получить к ним доступ, и правильно ли маяки назначены учетной записи?   -  person Wojtek Borowicz    schedule 10.07.2014
comment
Я создал инструмент для отладки ошибок неправильного использования API: github.com/nrbrook/NBCoreBluetoothAPIMisuseGuard   -  person Nick    schedule 03.05.2016


Ответы (2)


Я столкнулся с той же проблемой. Я подозреваю, что это ошибка с Estimote SDK. Мне удалось обойти это, вызвав метод startEstimoteBeaconsDiscoveryForRegion (который, как я полагаю, включает CBCentralManager). Мой код инициализации выглядит следующим образом:

_estBeaconManager = [[ESTBeaconManager alloc] init];
_estBeaconManager.delegate = self;
_estBeaconRegion = [[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID identifier:@"Estimotes"];
[_estBeaconManager startRangingBeaconsInRegion:_estBeaconRegion];
[_estBeaconManager startEstimoteBeaconsDiscoveryForRegion:_estBeaconRegion];

Надеюсь это поможет

person Ege Akpinar    schedule 22.06.2014

Только для тех, кому не хватает очевидного, как и мне, убедитесь, что на вашем телефоне включен Bluetooth.

person Jack L. Simmons    schedule 29.06.2021