CBPeripheral的discoverServices没有返回任何东西

时间:2014-04-03 10:31:08

标签: ios objective-c macos bluetooth bluetooth-lowenergy

我尝试连接蓝牙外设,但无法发现服务。发现设备后,我打印广告数据,它显示以下内容:

{
    kCBAdvDataChannel = 38;
    kCBAdvDataIsConnectable = 1;
    kCBAdvDataLocalName = UR;
    kCBAdvDataServiceUUIDs =     (
        1802
    );
}

正如您所看到的,显然有一个广告服务。但是,连接后我使用以下代码:

- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {
    DDLogInfo(@"Connected to %@", peripheral.name);
    [self.bluetoothManager stopScan];
    if (peripheral == self.connectedPeripheral && self.connectedPeripheral.state ==  CBPeripheralStateConnected){
        [self.connectedPeripheral setDelegate:self];
        [self.connectedPeripheral discoverServices:nil];
    }
}

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error永远不会被调用。我还确保在didDisconnectPeripheral上设置一个断点,以防它出于某种原因断开连接,但似乎没有任何区别。

如果我将scanForPeripheralsWithServices:与前面提到的服务的UDID一起使用,则会出现同样的问题,它不会显示任何结果。

我尝试连接的设备是Mac,它使用IOBluetooth发布其服务作为外围设备。

关于这里可能出现什么问题的任何想法?

1 个答案:

答案 0 :(得分:0)

错误似乎源于服务器实现。很可能是因为事情没有得到妥善保留。