我尝试连接蓝牙外设,但无法发现服务。发现设备后,我打印广告数据,它显示以下内容:
{
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
发布其服务作为外围设备。
关于这里可能出现什么问题的任何想法?
答案 0 :(得分:0)
错误似乎源于服务器实现。很可能是因为事情没有得到妥善保留。