2015-06-04 18 views
7

Tôi đang cố gắng xác định thiết bị nào được kết nối qua bluetooth trong iOS nhưng dường như không thể tìm ra thiết bị. Lý tưởng nhất là tôi muốn tạo danh sách các thiết bị bluetooth được kết nối.Có thể tạo danh sách thiết bị bluetooth được kết nối cho iOS không?

Tôi đã thử sử dụng "retrieveConnectedPeripheralsWithServices" nhưng điều này yêu cầu dịch vụ cụ thể để tìm kiếm. Tôi muốn tạo danh sách tất cả các thiết bị bluetooth được kết nối, không chỉ các thiết bị bluetooth dịch vụ cụ thể. Có cách nào để chỉ tìm kiếm tất cả các dịch vụ mà không lặp qua tất cả các dịch vụ có thể không?

Bất kỳ ý tưởng nào?

+0

Bluetooth hoặc Bluetooth nhập thấp Năng lượng? ExternalAccessory.framework (đối với các chuẩn Bluetooth MFi cổ điển) có thể cung cấp cho bạn danh sách các thiết bị được kết nối. – Larme

+0

Xin lỗi, nên đề cập đến nó là BLE – alan478

Trả lời

3

Đây là giải pháp dành cho iOS (Cảm ơn bạn Larme):

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

tài liệu:

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

Ngoài ra nếu ai đó cần, đây là tài liệu hướng dẫn dành cho Mac:

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

và đoạn mã cho Mac

NSArray *devices = [IOBluetoothDevice pairedDevices]; 

Đối với câu hỏi BLE alan478 của:

Khung cốt lõi Bluetooth cung cấp các lớp học cần thiết cho iOS của bạn và các ứng dụng Mac để giao tiếp với các thiết bị được trang bị năng lượng thấp Bluetooth Công nghệ không dây. Bạn có thể có một cái nhìn hướng dẫn này:

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

và đoạn mã BLE là:

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

Vui lòng đọc tài liệu này trên developer.apple.com:

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

đây là một đoạn thú vị cho bạn:

Khám phá dữ liệu ngoại vi một cách khôn ngoan Thiết bị ngoại vi có thể có nhiều dịch vụ và đặc điểm hơn bạn có thể quan tâm khi phát triển ứng dụng để hoàn thành một trường hợp sử dụng cụ thể. Việc khám phá tất cả các dịch vụ của ngoại vi và các đặc điểm liên quan có thể ảnh hưởng tiêu cực đến tuổi thọ pin và hiệu suất của ứng dụng. Do đó, bạn nên tìm kiếm và chỉ khám phá các dịch vụ và đặc điểm liên quan mà ứng dụng của bạn cần.

Ví dụ: hãy tưởng tượng rằng bạn được kết nối với thiết bị ngoại vi có nhiều dịch vụ khả dụng, nhưng ứng dụng của bạn chỉ cần truy cập vào hai trong số đó.Bạn có thể tìm kiếm và khám phá hai dịch vụ này mà thôi, bằng cách thông qua trong một mảng của UUIDs dịch vụ của họ (đại diện bởi các đối tượng CBUUID) đến discoverServices: phương pháp của lớp CBPeripheral, như thế này:

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

Sau khi bạn đã khám phá hai dịch vụ mà bạn quan tâm, bạn có thể tìm kiếm và khám phá những đặc điểm của các dịch vụ mà bạn quan tâm. Một lần nữa, chỉ cần truyền một mảng UUID xác định các đặc tính bạn muốn khám phá (cho mỗi dịch vụ) để discoverCharacteristics: forService: phương thức của lớp CBPeripheral.

Cũng có nhận xét này:.

"nghĩ rằng Apple cấm điều này Chúng tôi chỉ có thể nhận được danh sách các thiết bị với CBUUID cụ thể vì vậy nếu bạn muốn liệt kê tất cả các thiết bị (giống như cài đặt Bluetooth không. natively) sau đó nó không thể vui lòng sửa tôi nếu tôi đã sai lầm - Mrug ngày 11 tháng ba tại 13:24"

dưới câu hỏi này:..

How to get list of available Bluetooth devices?

+0

Câu hỏi xuất hiện trên iOS, không có Mac OSX. – Larme

+0

Cảm ơn gyer trợ giúp của bạn. Tôi nên đề cập đến nó là dành cho BLE. Có cách nào tương tự để làm điều này cho BLE? Những gì tôi về cơ bản cố gắng làm là tái tạo menu Bluetooth iOS (như được tìm thấy trong Cài đặt> Bluetooth) nhưng chỉ cho các thiết bị được kết nối. – alan478

+0

Bạn đang chào mừng alan478, tôi chỉ cần thêm một đoạn mã cho BLE và liên kết hướng dẫn chi tiết quá, hy vọng nó làm việc cho trường hợp của bạn. – mgyky

Các vấn đề liên quan