usar tiene como ios xamarin.ios bluetooth core-bluetooth

ios - tiene - Resolver ''CBConcreteCentralManager no está encendido'' en Core Bluetooth en MonoTouch



iphone 10 tiene nfc (1)

Actualmente estoy intentando hacer funcionar una muestra de Bluteooth.

Estoy usando esta muestra como referencia - http://developer.apple.com/library/mac/#samplecode/HeartRateMonitor/Listings/HeartRateMonitor_HeartRateMonitorAppDelegate_m.html#//apple_ref/doc/uid/DTS40011322-HeartRateMonitor_HeartRateMonitorAppDelegate_m-DontLinkElementID_4

Bluetooth está habilitado en mi dispositivo.

He intentado usar código como:

_manager = new CBCentralManager (); _manager.DiscoveredPeripheral += HandleDiscoveredPeripheral; _manager.ConnectedPeripheral += HandleConnectedPeripheral; _manager.DisconnectedPeripheral += HandleDisconnectedPeripheral;

y he intentado escribir mi propio delegado heredando de CBCentralManagerDelegate

pero cuando llamo a StartScan

void StartScan () { var spp = Guid.Parse("00001101-0000-1000-8000-00805f9b34fb"); _manager.ScanForPeripherals(new [] { spp }, null); }

entonces veo un error:

bluetooth1[1210:907] CoreBluetooth[WARNING] <CBConcreteCentralManager: 0x9beea0> is not powered on

Buscando este error, he encontrado solo un par de visitas:

Pero ninguno de estos es particularmente útil ...

Traté de retrasar el inicio hasta que el estado cambió:

void HandleUpdatedState (object sender, EventArgs e) { // more to do here.... Console.WriteLine("State updated " + e.ToString()); switch (_manager.State) { case CBCentralManagerState.PoweredOn: _manager.DiscoveredPeripheral += HandleDiscoveredPeripheral; _manager.ConnectedPeripheral += HandleConnectedPeripheral; _manager.DisconnectedPeripheral += HandleDisconnectedPeripheral; StartScan(); break; case CBCentralManagerState.Unauthorized: break; } }

  • pero esto nunca parece ser llamado.

También intenté ejecutar la muestra xcode, pero la fuerza no está conmigo hoy ...

¿Alguien tiene alguna idea de lo que significa CBConcreteCentralManager: 0x9beea0 y cómo solucionarlo aquí?


Respuesta: Para superar esto en MonoTouch tuve que usar un constructor diferente:

CBCentralManager(_delegate, MonoTouch.CoreFoundation.DispatchQueue.CurrentQueue)

Cuando cambié a eso, comenzó a funcionar ...