IOS Core Bluetooth: Obtención de advertencia de API MISUSE
bluetooth-lowenergy core-bluetooth (2)
Por favor use el siguiente código para resolver la advertencia:
(Puede hacer referencia al código en https://github.com/luoxubin/BlueTooth4.0 )
if (bluetoothPowerOn) {
[self.centralManager scanForPeripheralsWithServices:[serviceIDs copy] options:@{CBCentralManagerScanOptionAllowDuplicatesKey:@(NO)}];
}
-(void)centralManagerDidUpdateState:(CBCentralManager *)central{
switch (central.state) {
case CBManagerStatePoweredOn:
{
bluetoothPowerOn = YES; //new code
[self start];
break;
}
default:
{
bluetoothPowerOn = NO; //new code
[self stopScan:[NSError hardwareStatusErrorWithMessage:@"Cannot open Bluetooth, please check the setting." hardwareStatus:central.state]];
break;
}
}
}
Estoy escribiendo una aplicación de prueba en iOS 7 con Core Bluetooth API. Cuando estoy probando la aplicación, descubrí que recibo el siguiente mensaje de advertencia:
2014-04-28 15:52:09.400 TestBluetooth[626:60b] CoreBluetooth[API MISUSE] can only accept commands while in the powered on state
Más tarde, depuré la aplicación y descubrí que la advertencia proviene de la siguiente línea de código:
[manager scanForPeripheralsWithServices:array options:scanOptions];
Entonces, ¿alguien puede decirme por qué recibo este mensaje en la consola?
Hay dispositivos Android bluetooth 4.0 a mi alrededor, pero esta aplicación no los está descubriendo como un dispositivo periférico. Entonces, ¿por qué no está descubriendo los dispositivos bluetooth 4.0 LE con Android como periféricos?
[-CBCentralManagerDelegate centralManagerDidUpdateState:]
esperar hasta que se haya llamado al callback [-CBCentralManagerDelegate centralManagerDidUpdateState:]
. Y luego, verifique que el estado sea PoweredOn
antes de comenzar a buscar periféricos.