2012-10-24 32 views
9

Tôi đang làm việc trên một ứng dụng quản lý CoreBluetooth cho iPhone. Để có thể kết nối lại với CBPeripheral đã được phát hiện trước đó, tôi lưu UUID của thiết bị ngoại vi (trong CoreData) và sau đó gọi phương thức retrievePeripherals của CBCentralManager :. My didRetrievePeripherals: gọi lại được gọi và tôi có thể kết nối, vv Cho đến nay rất tốt.Tránh phát hiện các dịch vụ và đặc điểm khi kết nối lại trong CoreBluetooth

Vì tôi đang kết nối lại với thiết bị ngoại vi mà tôi đã biết, tôi muốn tránh khám phá các dịch vụ và đặc điểm của nó. Vì vậy, tôi lưu các UUID của các dịch vụ và đặc điểm (một lần nữa trong CoreData, cùng với UUID của thiết bị ngoại vi) khi tôi kết nối lần đầu tiên.

Nhưng tôi không thể sử dụng các UUID này để đọc hoặc viết các đặc điểm vì đọcValueForCharacteristic: hoặc writeValueForCharacteristic của CBPeripheral: lấy CBCharacteristic làm tham số và không có API để xây dựng cá thể CBCharacteristic.

Có cách nào để tránh khám phá các dịch vụ và đặc điểm trong khi kết nối lại với thiết bị ngoại vi đã biết trước đó không?

+0

Xin chào, khi bạn lưu UUID của các thiết bị đã biết trong CoreData, bạn có thể lưu cấu trúc dữ liệu cho từng thiết bị có chứa các dịch vụ và đặc điểm mà chúng triển khai không? –

+1

Các dịch vụ và đặc điểm của một thiết bị được xác định bởi UUID, mà tôi lưu. Nhưng tôi không thể lưu các thể hiện của CBService và CBCharacteristic trong CoreData vì chúng không có nguồn gốc từ NSManagedObject - ít nhất, tôi không biết làm thế nào tôi có thể làm điều đó. Hay tôi đã hiểu lầm câu hỏi của bạn? – mezulu

+0

Ok Tôi biết hiểu câu hỏi của bạn. Tôi nghĩ bạn sẽ phải làm với discoverCharacteristics: forService: sử dụng UUID ... –

Trả lời

3

Mezulu, bạn muốn sử dụng liên kết được mã hóa/ghép nối - sau đó iOS sẽ thực hiện bộ nhớ đệm cho bạn. Xem câu trả lời của tôi here.

+0

cảm ơn phản hồi này. Tôi không biết rằng iOS 6 đã giới thiệu bộ nhớ đệm của các dịch vụ và đặc điểm. Đây là những gì tôi đang tìm kiếm. – mezulu

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