Доза CoreBluetooth работает на IOS6.0, IOS6.1, IOS6.1.2?

я работаю над bluetooth4.0, но я обнаружил, что CoreblueTooth не может работать на iOS 6+, мой iphone4s - IOS 6.1.2.

он не может найти какое-либо устройство (я уверен, что устройство включено), журнал каждый раз выглядит следующим образом:

CoreBluetooth [ВНИМАНИЕ] не включен

Кто-нибудь сталкивался с этой проблемой?


person user2159666    schedule 12.03.2013    source источник
comment
Предупреждающее сообщение сообщает вам, что радио Bluetooth в iPhone не включено. Это не говорит вам, что ваше периферийное устройство выключено. Вам необходимо опубликовать код, который вы используете для настройки и использования Bluetooth.   -  person mttrb    schedule 12.03.2013
comment
У mbuc91 есть более подробный ответ, но в ответ на ваш основной вопрос: да, Core Bluetooth работает на всех этих версиях iOS на iPhone 4S. Я использовал его для связи с аксессуаром в каждой из этих версий. Существуют странные ошибки с некоторыми более старыми версиями iOS 6.0, которые могут привести к тому, что нулевые UUID будут возвращены с периферийных устройств, но сами устройства обнаруживаются очень хорошо даже там.   -  person Brad Larson    schedule 15.03.2013


Ответы (2)


Статус CBCentralManagerStatePoweredOn означает не только то, что Bluetooth включен, но и то, что ваш экземпляр CBCentralManager или CBPeripheralManager готов к использованию. Вы должны инициализировать менеджера, а затем дождаться изменения его состояния, прежде чем использовать его. Например, если вы действуете как центральный сервер, вы должны инициализировать его следующим образом:

centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];

И реализовать метод делегата centralManagerDidUpdateState:

- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
    if (central.state == CBCentralManagerPoweredOn)
    {
        //do your stuff, it's ready
    }
}
person mbuc91    schedule 12.03.2013

Я тестирую iPhone 4S под управлением 6.0.1. IPhone играет центральную роль, и я не вижу вашего предупреждения.

Можете ли вы быть более конкретным о том, что вы делаете? - Вы играете периферийную или центральную роль?

Вы инициализировали CBCentralManager (если вы центральный) следующим образом?

centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()];

Я надеюсь, что я мог помочь вам

person Linard Arquint    schedule 12.03.2013