2014-09-20 11 views
6

Così dalla lettura della documentazione CBPeripheralDelegate, sembra che RSSI e peripheralDidUpdateRSSI:error: stati deprecati con iOS 8.iOS 8 CoreBluetooth Metodi obsoleti RSSI

ho notato che il mio indicatore di potenza del segnale non era più in corso di aggiornamento, così ho fatto qualche ricerca e trovato un nuovo metodo ([CBPeripheralDelegate peripheral:didReadRSSI:error:]) che viene chiamato in modo asincrono dopo aver chiamato il metodo readRSSI. Sfortunatamente, questo metodo non sembra essere richiamato neanche, anche se ho impostato la classe genitore come delegato di CBPeripheral.

qualcun altro ha avuto problemi con gli aggiornamenti iOS 8 CoreBluetooth?

risposta

9

Esiste un problema noto che è stato pubblicato su questo sul forum di Apple Developer a cui ho un radar aperto pure.

Il problema sembra essere che il nuovo metodo di callback peripheral:didReadRSSI:error: non viene mai chiamato su iOS 8 in particolare dopo che la connessione iniziale è stata effettuata su una periferica. L'unica soluzione che ho trovato è quella di ripristinare il bluetooth sul telefono accendendolo/spegnendolo o riavviando il telefono.

Here is the link to open radar I filed.

UPDATE:

appena testato il mio esempio che è stato visualizzando questa questione con l'attuale 8.2 rilascio e io non sono più vedere eventuali problemi con il nuovo iOS 8 metodo delegato mai chiamato. Sto marcando il mio radar come risolto per la versione 8.2.

+1

Vedere lo stesso identico problema su iOS 8.1.3. –

+0

Ho testato ciascuna versione beta e la prossima versione imminente sembra aver risolto questo problema. –

-1

funziona di nuovo in iOS 8.0.2!

uso [myPeripheral readRSSI];

1

E funziona iOS 8.0.2, ma ora viene strozzata. Invio un readRSSI ogni 200ms e ricevo una risposta solo una volta al secondo. Ha funzionato bene con iOS 7.1.

5

In iOS 8.1.1, peripheral:didReadRSSI:error: verrà chiamato solo per le periferiche che si è collegati. Se hai appena scoperto le periferiche con una scansione e poi hai chiamato readRSSI su di esse, la richiamata non verrà chiamata.

Provare prima a connettersi alla periferica (tramite CBCentralManager's connectPeripheral:options:), quindi chiamare readRSSI.

+2

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post, e una volta che hai [reputazione] sufficiente (http://stackoverflow.com/help/whats-reputation) essere in grado di [commentare qualsiasi post] (http://stackoverflow.com/help/privileges/comment). –

+4

In realtà fornisce una risposta alla domanda. La sua domanda riguardava 'peripheral: didReadRSSI: error:' non veniva chiamato e chiedeva se qualcun altro aveva problemi con esso. Ho avuto problemi con esso e ho trovato la soluzione per fare in modo che CoreBluetooth chiami quel metodo delegato in iOS 8: connettersi alla periferica. –

+0

Questo sarà restituito correttamente solo la prima volta che ci si connette alla periferica e si chiama [readRSSI periferico]. Qualsiasi connessione successiva non riuscirà a chiamare il metodo delegato didReadRSSI. –

Problemi correlati