Sul lato centrale, il delegato CBPeripheral viene chiamato mentre è connesso o disconnesso. Ma come fa un CBPeripheralManager a sapere che è connesso o disconnesso da un dispositivo centrale? Inoltre, è possibile che un dispositivo periferico declini una richiesta di connessione da un dispositivo centrale?In che modo CBPeripheralManager sa che è connesso o disconnesso da un dispositivo centrale in Core Bluetooth?
risposta
Non si riceve una notifica specifica quando una centrale si connette al servizio periferico fornito dalla propria app. È possibile dedurre una connessione dal CBPeripheralManagerDelegate
metodi seguenti viene chiamato -
didSubscribeToCharacteristic
didReceiveReadRequest
didReceiveWriteRequest
se avete ricevuto un abbonamento tramite didSubscribeToCharacteristic
allora si può dedurre una disconnessione quando si ricevere una chiamata corrispondente a didUnsubscribeFromCharacteristic
. Se la centrale non sta utilizzando le sottoscrizioni, non si ha alcuna indicazione che siano disconnessi, semplicemente non si otterranno più richieste di lettura/scrittura.
Non è possibile rifiutare una connessione da una centrale. È possibile impostare un requisito di crittografia su una o più delle caratteristiche. Ciò avvierà quindi un processo di accoppiamento basato su pin quando un centro tenta prima di leggere/scrivere/notificare su quella caratteristica.
È inoltre possibile implementare una qualche forma di processo di autenticazione in cui una centrale è necessaria per rispondere a una sfida/scrivere una password per una caratteristica ecc. Prima di rispondere alle altre richieste di lettura/scrittura di quel centro.
- 1. Come ricollegare al dispositivo dopo averlo disconnesso da Core Bluetooth
- 2. Dispositivo Bluetooth attualmente connesso Android
- 3. In che modo Perl sa che un file è binario?
- 4. In che modo ASM sa che un'operazione aritmetica è firmata o non firmata?
- 5. In che modo un agente Consul sa che è il leader di un cluster?
- 6. come ottenere l'indirizzo MAC del dispositivo connesso bluetooth in Android
- 7. In che modo ASP.NET MVC sa che un metodo è un metodo di azione?
- 8. Best practice per garantire che l'utente sia connesso o disconnesso utilizzando cookieStore e AngularJS
- 9. Dispositivo Android LogCat disconnesso
- 10. In che modo Linux sa quale ioctl deve chiamare?
- 11. BLE con Android 5.0: come ottenere un dispositivo che funga da server AND centrale?
- 12. in che modo GDB sa che deve interrompersi al punto di interruzione specificato?
- 13. In che modo TestFlightApp sa quale dispositivo sto utilizzando tramite il web?
- 14. In che modo Bundler sa quale ambiente usare?
- 15. In che modo Windows sa come risolvere le query mDNS?
- 16. Rilevamento dello stato della rete (connesso - disconnesso) in C#
- 17. In che modo C# sa di che tipo è il letterale?
- 18. In che modo Unity.Resolve sa quale costruttore usare?
- 19. In che modo Xcode sa chi è stato "creato da" il progetto?
- 20. emulare un dispositivo Bluetooth da PC
- 21. In che modo Grails sa applicare un "layout" alle pagine che rende?
- 22. CBPeripheralManager non è alimentato
- 23. In che modo un'applicazione Windows 8 Metro si connette a un database centrale?
- 24. In Android, come ottenere il profilo di un dispositivo bluetooth connesso?
- 25. Iphone Come sapere se l'auricolare Bluetooth è connesso
- 26. In iOS, come rilevare da Javascript (Web) il dispositivo è connesso via 3G o Wifi?
- 27. Core Bluetooth: CBPeripheral disconnette ogni ~ 10 secondi
- 28. In che modo Passkey Bluetooth protegge i again MITM attack
- 29. udev: dispositivo connesso all'avvio
- 30. È possibile "disaccoppiare" un dispositivo Bluetooth in Cocoa/ObjC?
Ciao Paulw11, grazie per la tua risposta. Ma non sono sicuro del processo di creazione della connessione inizializzato da centrale. Significa che la centrale legge semplicemente i segnali di trasmissione dalla periferica mentre si connette, senza avvisare la periferica finché non fa nulla sulle caratteristiche? –
No, sul livello Bluetooth c'è una notifica alla periferica che viene avviata una connessione e alcune comunicazioni avvengono per stabilire la connessione, ma il framework Bluetooth Core non espone un metodo delegato per avvisare una CBPeripheral che è stata effettuata una connessione – Paulw11
@Paulw conosci la ragione dietro a non esporre queste informazioni? Inoltre, c'è un modo per simulare un link BTLE "cattivo" (come possiamo dire che il collegamento WiFi farà cadere il 50% dei pacchetti usando Impostazioni -> Sviluppatore)? –