Ci sono molte domande correlate ma (apparentemente) nessuna risposta. SO ...iOS come riconnettersi al dispositivo BLE in background?
La mia app per iOS fa riceve aggiornamenti dal mio dispositivo BLE mentre l'app è in background. Se perdo il contatto con il dispositivo BLE, quindi in centralManager:didDisconnectPeripheral:
chiamo - [CBCentralManager cancelPeripheralConnection:]
- altrimenti non riconnetterò mai alla periferica persa. Quindi chiamo [(ri) chiamata - [CBCentralManager scanForPeripheralsWithServices:options:]
.
La registrazione mi mostra che la chiamata didDisconnectPeripheral
e le sue chiamate contenute stanno entrambi accadendo mentre nello sfondo. Tuttavia, la riconnessione avviene solo quando l'app si riattiva dallo sfondo.
Quindi sono in grado di comunicare con il dispositivo BLE collegato mentre è in background (sì!) Ma non riconnettere. Questo è abbastanza importante per la mia app e (si potrebbe pensare) per altre app. Suggerimenti benvenuto
Sfortunatamente non per me. Infatti, usando connectPeripheral (invece di richiamare scanForPeripherals) la mia app non si riconnette nemmeno se è ancora in primo piano. La connessione non viene mai ristabilita.Considerando che se chiamo scanForPeripheral in didDisconnectPeripheral, I * do * si riconnetterà se in primo piano, ma ancora non in background. Grr. –
Il dispositivo è un TI SensorTag, FWIW. –
Ok. I tag dei sensori sono fastidiosi - si spengono dopo pochi minuti, quindi non sono sicuro che questo sia il tuo problema. Anche i dispositivi iOS sono difficili da utilizzare perché cambiano l'indirizzo MAC ogni pochi minuti. Ho un tag del sensore, quindi avrò un gioco e vedrò cosa succede. Potrebbe volerci un giorno o due ... – Paulw11