Minimal iOS BluetoothManager Ejemplo

He estado construyendo un ejemplo mínimo para detectar dispositivos Bluetooth cercanos utilizando el marco privado BluetoothManager en iOS 5.0.

Usando una respuesta encontrada en esta pregunta: Encontrar dispositivos Bluetooth genéricos al alcance

Aquí está mi método viewDidLoad para registrarme en BluetoothAvailabilityChangedNotification. También me registro en BluetoothDeviceDiscoveredNotification también.

[[NSNotificationCenter defaultCenter]
    addObserver:self
    selector:@selector(bluetoothAvailabilityChanged:)
    name:@"BluetoothAvailabilityChangedNotification"
    object:nil];

btCont = [BluetoothManager sharedInstance];

[[NSNotificationCenter defaultCenter]
    addObserver:self
    selector:@selector(deviceDiscovered:)
    name:@"BluetoothDeviceDiscoveredNotification"
    object:nil];

Cuando recibo la notificación de cambio de disponibilidad de Bluetooth, configuro el escaneo del dispositivo habilitado, como se describe en una de las respuestas en el enlace mencionado anteriormente.

- (void)bluetoothAvailabilityChanged:(NSNotification *)notification
{
    NSLog(@"BT State: %d", [btCont enabled]);
    [btCont setDeviceScanningEnabled:YES];
}

Para completar, aquí está el método de notificación del dispositivo descubierto.

- (void)deviceDiscovered:(NSNotification *) notification
{
    NSLog(@"Discovered one!");
}

Los registros producidos al ejecutar la aplicación de prueba son los siguientes:

BTM: attaching to BTServer
BTM: posting notification BluetoothAvailabilityChangedNotification
BT State: 1
BTM: setting device scanning enabled

esafortunadamente, el teléfono no capta ningún dispositivo Bluetooth, aunque sé que hay dispositivos detectables próximos (verificados usando un dispositivo Android).

Algunas cosas que ya he probado:

Calling [btCont setPowered: YES]; y registrarse para la notificación de cambio de estado de energía asociada, ejecutando setDeviceScanningEnabled: YES en la devolución de llamadaCalling [btCont resetDeviceScanning] antes de la llamada setDeviceScanningEnabledCalling the scanForConnectableDevices: (unsigned int) arg1; método, adivinando que arg1 puede ser algún tipo de valor de tiempo de espera. He probado una variedad de valores sin éxito.

Cualquier pensamiento sería muy apreciado. ¡Gracias

Respuestas a la pregunta(4)

Su respuesta a la pregunta