2016-02-16 2 views
1

Я пишу программу на базе iOS, которая взаимодействует с устройством Bluetooth через внешнюю инфраструктуру. Я бы хотел заранее определить Bluetooth, даже если вы хотите подключиться. К сожалению, я не вижу ничего в документации External Accessory Framework, которая позволяет мне это делать.Как проверить, включен ли Bluetooth через внешнюю инфраструктуру iOS?

После проверки документов для [EAAccessoryManager][1], ближайший я могу найти, это проверить список [connectedAccessories][1], чтобы узнать, подключены ли какие-либо устройства. Однако это напрямую не указывает статус Bluetooth-адаптера.

Есть много примеров на SO, касающихся Core Bluetooth и Bluetooth LE. Я специально ищу решение, относящееся к структуре внешних аксессуаров.

ответ

0

Это невозможно с картой ExternalAccessory. Вы должны использовать CoreBluetooth, который может предоставить вам необходимую информацию на устройствах с оборудованием BLE, т.е. все выпущено после 2011 года. Тот факт, что вы используете ExternalAccessory для связи с вашим устройством, не мешает вам использовать CoreBluetooth только для этой цели узнать, включен ли Bluetooth.

Для старых устройств нет возможности получить эту информацию в общедоступных API-интерфейсах, однако, если вы не собираетесь публиковать свое приложение в App Store, вы можете использовать частную инфраструктуру BluetoothManager.

Чтобы получить информацию с CoreBluetooth вам нужно будет создать экземпляр CBCentralManager экземпляр, например, как это:

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

, а затем реализовать следующий метод делегата, чтобы получить соответствующую информацию:

- (void)centralManagerDidUpdateState:(CBCentralManager *)central { 
    BOOL bleAvailable = central.state != CBCentralManagerStateUnsupported; 
    if (bleAvailable) { 
     BOOL bluetoothTurnedOn = central.state != CBCentralManagerStatePoweredOff; 
     // Do something with the info 
    } 
    else { 
     // Out of luck... We won't be able to determine whether BT is on or off 
    } 
} 
Смежные вопросы