2015-06-04 17 views
7

Próbuję określić, jakie urządzenia są połączone przez Bluetooth w systemie iOS, ale nie mogę tego zrozumieć. Idealnie chciałbym wygenerować listę podłączonych urządzeń bluetooth.Czy można wygenerować listę podłączonych urządzeń bluetooth na iOS?

Próbowałem użyć "retrieveConnectedPeripheralsWithServices", ale wymaga to określonej usługi do wyszukiwania. Chciałbym wygenerować listę wszystkich podłączonych urządzeń Bluetooth, a nie tylko urządzeń Bluetooth. Czy istnieje sposób na poszukiwanie wszystkich usług bez przechodzenia przez wszystkie możliwe usługi?

Wszelkie pomysły?

+0

Bluetooth lub Bluetooth nisko- Energia? ExternalAccessory.framework (dla klasycznych urządzeń zgodnych z Bluetooth M-Fi) może wyświetlić listę podłączonych urządzeń. – Larme

+0

Przepraszamy, należy wspomnieć, że jest BLE – alan478

Odpowiedz

3

Oto rozwiązanie dla iOS (Dziękuję LARME):

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

dokumentacja:

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

Także jeśli ktoś potrzebuje, to jest dokumentacja dla Mac:

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

i fragment kodu dla Mac

NSArray *devices = [IOBluetoothDevice pairedDevices]; 

Dla alan478 za BLE pytanie:

Ramy Rdzeń Bluetooth zapewnia klas potrzebnych dla iOS i aplikacji Mac do komunikowania się z urządzeniami, które są wyposażone w Bluetooth niskiej energii technologia bezprzewodowa. Można również zapoznać się ten tutorial:

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

i kodu BLE fragment brzmi:

// 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] 

Proszę przeczytać ten dokument na developer.apple.com:

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

tutaj jest interesujący akapit dla ty:

Misternie przeglądaj dane dotyczące urządzeń peryferyjnych Urządzenie peryferyjne może mieć o wiele więcej usług i cech, niż być może interesuje Cię, gdy projektujesz aplikację, aby spełnić określone wymagania. Odkrycie wszystkich usług peryferyjnych i związanych z nimi cech może negatywnie wpłynąć na żywotność baterii i wydajność aplikacji. Dlatego powinieneś poszukać i odkryć tylko te usługi i związane z nimi cechy, których wymaga twoja aplikacja.

Na przykład wyobraź sobie, że jesteś podłączony do urządzenia peryferyjnego, które ma wiele dostępnych usług, ale Twoja aplikacja potrzebuje tylko dwóch z nich.można szukać i odkryć te dwie usługi tylko, przekazując w tablicy ich UUID usług (reprezentowanych przez obiekty CBUUID) do discoverServices: metodę klasy CBPeripheral, tak:

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

Po odkryli dwie usługi, którymi jesteś zainteresowany, możesz w podobny sposób wyszukać i odkryć tylko cechy tych usług, które Cię interesują. Ponownie, po prostu wprowadź tablicę identyfikatorów UUID, które identyfikują cechy, które chcesz odkryć (dla każdej usługi) do discoverCharacteristics: forService: metoda klasy CBPeripheral.

Również nie jest to komentarz.

„myśleć Jabłko zakazuje tego, co możemy uzyskać tylko listę urządzeń z konkretnym CBUUID więc jeśli chcesz do listy wszystkich urządzeń (tak samo jak ustawienia Bluetooth robi. natywnie) to nie jest możliwe, proszę mnie poprawić, jeśli się mylę - Mrug 11 marca o 13:24"

pod tym pytaniem..

How to get list of available Bluetooth devices?

+0

Pytanie pojawia się na iOS, nie Mac OSX. – Larme

+0

Dzięki za pomoc, gyer. Powinienem wspomnieć, że to jest dla BLE. Czy istnieje podobny sposób, aby to zrobić dla BLE? Co zasadniczo próbuję zrobić, to ponownie utworzyć menu Bluetooth iOS (jak w Ustawienia> Bluetooth), ale tylko dla podłączonych urządzeń. – alan478

+0

Nie ma za co, alan478, po prostu dodałem fragment kodu dla BLE i samouczek o szczegółowym tutorialu, mam nadzieję, że to działa w twoim przypadku. – mgyky

Powiązane problemy