Tiếp theo kết nối với một thiết bị BLE được quảng cáo một dịch vụ cụ thể Tôi quan tâm đến, nhằm phát hiện các dịch vụ này, tôi kêu gọi:iOS lõi Bluetooth: dịch vụ Đã quảng cáo không được phát hiện trên ngoại vi
[self.peripheral discoverServices:@[[self.class serviceUUID]]];
Phương thức ủy nhiệm - (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
được gọi là không có lỗi, nhưng số lượng dịch vụ trả lại cho thiết bị ngoại vi là 0, và do đó không có đặc điểm nào được phát hiện thêm. Có ai có bất kỳ ý tưởng tại sao điều này đang xảy ra? Cảm ơn trước!
Dưới đây là toàn bộ nội dung của phương thức đại biểu.
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error {
if (error) {
NSLog(@"didDiscoverServices failed: %@", error);
return;
}
NSLog(@"didDiscoverServices succeeded for peripheral: %@.", peripheral.name);
NSLog(@"Number of services: %d", peripheral.services.count);
for (CBService *s in peripheral.services) {
NSLog (@"Discovered service UUID: %@", s.UUID);
if ([s.UUID isEqual:[self.class serviceUUID]]) {
NSLog(@"Discover characteristics...");
[self.peripheral discoverCharacteristics:@[[self.class controlPointCharacteristicUUID], [self.class packetCharacteristicUUID]] forService:s];
}
}
}
Giao diện điều khiển cho thấy:
2014-11-27 15:54:51.933 k[197:13362] didDiscoverServices succeeded for peripheral: BootK
2014-11-27 15:54:51.934 k[197:13362] Number of services: 0
Thiết bị ngoại vi của bạn là gì? Bạn đã thử một cái gì đó giống như các ứng dụng LightBlue từ cửa hàng ứng dụng để xem nếu nó có thể khám phá các dịch vụ? Bạn đã thử quét tìm 'nil' thay vì các dịch vụ cụ thể để xem điều gì sẽ xảy ra? – Paulw11
Nó hoạt động với LightBlue. Quá trình quét cho 'nil' không giải quyết được vấn đề. Tôi đã thử sử dụng một số mã mẫu mới nhất được cung cấp bởi Nordic, thay vì mã mẫu cũ sử dụng các khối ở trên và bây giờ nó hoạt động :) Cảm ơn – Gina