2015-06-04 14 views
7

Sto provando a determinare quali dispositivi sono collegati tramite Bluetooth in iOS ma non riesco a capirlo. Idealmente mi piacerebbe generare un elenco di dispositivi bluetooth collegati.È possibile generare un elenco di dispositivi bluetooth collegati per iOS?

Ho provato a utilizzare "retrieveConnectedPeripheralsWithServices" ma ciò richiede un servizio specifico per la ricerca. Mi piacerebbe generare un elenco di tutti i dispositivi bluetooth collegati, non solo dispositivi bluetooth con servizi specifici. Esiste un modo per cercare tutti i servizi senza eseguire il looping di tutti i servizi possibili?

Qualche idea?

+0

Bluetooth o Bluetooth Low Energia? ExternalAccessory.framework (per i convenzionali Bluetooth MFi standard) può fornire l'elenco dei dispositivi collegati. – Larme

+0

Spiacente, dovrei aver detto che è BLE – alan478

risposta

3

Ecco la soluzione per iOS (Grazie Larme):

NSArray *connectedAccessories = [[EAAccessoryManager sharedAccessoryManager] connectedAccessories]; 

documentazione:

https://developer.apple.com/library/prerelease/ios/documentation/ExternalAccessory/Reference/EAAccessoryManager_class/index.html#//apple_ref/occ/instp/EAAccessoryManager/connectedAccessories

Anche se qualcuno ha bisogno, questa è la documentazione per Mac:

https://developer.apple.com/library/mac/documentation/DeviceDrivers/Conceptual/Bluetooth/BT_Intro/BT_Intro.html

e frammento di codice per Mac

NSArray *devices = [IOBluetoothDevice pairedDevices]; 

Per la domanda BLE di alan478:

Il quadro Nucleo Bluetooth fornisce le classi necessarie per iOS e applicazioni Mac per comunicare con dispositivi che sono dotati di Bluetooth a basso consumo energetico tecnologia wireless. Si può dare un'occhiata questo tutorial:

http://www.raywenderlich.com/52080/introduction-core-bluetooth-building-heart-rate-monitor

e frammento di codice BLE è:

// In this case you need to tell UUID for serching specific device 
CBUUID *hrate = [CBUUID UUIDWithString:@"1800"]; 

// Create a dictionary for passing down to the scan with service method 
NSDictionary *scanOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:CBCentralManagerScanOptionAllowDuplicatesKey]; 

// Tell the central manager (cm) to scan for the heart rate service 
[cm scanForPeripheralsWithServices:[NSArray arrayWithObject:hrate] options:scanOptions] 

Si prega di leggere questo documento su developer.apple.com:

https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/BestPracticesForInteractingWithARemotePeripheralDevice/BestPracticesForInteractingWithARemotePeripheralDevice.html

questo è un paragrafo interessante per you:

Esplora saggiamente i dati di una periferica Un dispositivo periferico può disporre di molti più servizi e caratteristiche di quelli che potrebbero essere interessati quando si sviluppa un'app per soddisfare un caso d'uso specifico. La scoperta di tutti i servizi di una periferica e le caratteristiche associate possono influire negativamente sulla durata della batteria e sulle prestazioni della tua app. Pertanto, dovresti cercare e scoprire solo i servizi e le caratteristiche associate di cui ha bisogno la tua app.

Ad esempio, immagina di essere connesso a un dispositivo periferico con molti servizi disponibili, ma l'app deve poterne accedere solo a due.È possibile cercare e scoprire questi due servizi solo, passando in un allineamento dei loro UUID di servizio (rappresentata da oggetti CBUUID) per le discoverServices: metodo della classe CBPeripheral, in questo modo:

[peripheral discoverServices:@[firstServiceUUID, secondServiceUUID]]; 

Dopo aver scoperto i due servizi a cui sei interessato, puoi in modo simile cercare e scoprire solo le caratteristiche di questi servizi che ti interessano. Ancora una volta, passa semplicemente in una serie di UUID che identificano le caratteristiche che vuoi scoprire (per ciascun servizio) alla scopertaCaratteristiche: forService: metodo della classe CBPeripheral.

c'è anche questo commento:.

"che Apple proibisce questa cosa Possiamo solo ottenere l'elenco dei dispositivi con specifiche CBUUID quindi se si desidera elencare tutti i dispositivi (lo stesso le impostazioni Bluetooth fa. nativamente) allora non è possibile per favore correggetemi se sbaglio - Mrug 11 marzo alle 13:24"

ai sensi della presente domanda:..

How to get list of available Bluetooth devices?

+0

La domanda appare su iOS, non su Mac OSX. – Larme

+0

Grazie per il tuo aiuto Gyer. Avrei dovuto dire che è per BLE. C'è un modo simile per farlo per BLE? Quello che sto essenzialmente cercando di fare è ricreare il menu Bluetooth iOS (come in Impostazioni> Bluetooth) ma solo per i dispositivi connessi. – alan478

+0

Prego alan478, aggiungo solo uno snippet di codice per BLE e un link tutorial dettagliato, spero che funzioni per il tuo caso. – mgyky