我们的应用程序通过CoreBluetooth连接到Bluetooth LE设备。
在iOS 8和9上,一切正常。在iOS 10上,我们遇到了超时错误(Error Domain=CBErrorDomain Code=6 "The connection has timed out unexpectedly."
)
在CBCentralManagerDelegate:
中
- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(nullable NSError *)error;
在连接的
discoverServices
上调用CBPeripheral
之后。有人知道出什么事了吗?这是iOS 10问题吗?是否有某些BLE日志要检查?
使用Nordic Semiconductor nRF51822在iPad Pro 9.7上设置iOS 10.0.1(14A403)
最佳答案
好,我解决了问题。我混合了CBUUID
和NSUUID
从iOS 10开始CBPeripheral discoverServices
仅接受CBUUID
。 NSUUID
不再起作用。也许NSUUID
仅在较旧的iOS版本上偶然起作用。该文档明确指出:
代表要发现的服务类型的CBUUID
对象的列表。
NSArray *services = @[
[CBUUID UUIDWithString:ServiceUUID] //Correct
//[[NSUUID alloc] initWithUUIDString:ServiceUUID] //Does work on iOS 9 but not on iOS 10
];
[self.peripheral discoverServices:services];
期待将应用移植到强类型的Swift。
关于ios - iOS10上的CoreBluetooth:CBPeripheral discoverServices之后超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39591564/