iOS10上的CoreBluetooth:CBR外围设备发现服务后超时
我们的应用程序通过CoreBluetooth连接到蓝牙LE设备 在iOS 8和iOS 9上,一切正常。在iOS 10上,我们发现一个超时错误Error Domain=CBErrorDomain Code=6连接意外超时。 在CBCentralManagerDelegate中: 在连接的CBR外围设备上调用DiscoversServices后 有人知道出了什么问题吗?这是iOS 10版的问题吗?是否有特定的BLE日志需要检查iOS10上的CoreBluetooth:CBR外围设备发现服务后超时,ios,bluetooth-lowenergy,core-bluetooth,nrf51,Ios,Bluetooth Lowenergy,Core Bluetooth,Nrf51,我们的应用程序通过CoreBluetooth连接到蓝牙LE设备 在iOS 8和iOS 9上,一切正常。在iOS 10上,我们发现一个超时错误Error Domain=CBErrorDomain Code=6连接意外超时。 在CBCentralManagerDelegate中: 在连接的CBR外围设备上调用DiscoversServices后 有人知道出了什么问题吗?这是iOS 10版的问题吗?是否有特定的BLE日志需要检查 使用Nordic Semiconductor nRF51822在iPad
使用Nordic Semiconductor nRF51822在iPad Pro 9.7上安装iOS 10.0.1 14A403确保在CBCentralManager Legate中调用Peripal:DidDiscoversServices:之前,您不允许解除分配CBPeripal。这可以通过将外围设备分配给属性来轻松实现,例如。g、 :
@property (nonatomic, string) CBPeripheral *peripheral;
...
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {
self.peripheral = peripheral
[peripheral discoverServices:<desired service UUIDs>];
...
}
确保在CBCentralManagerDelegate中调用peripal:DidDiscoversServices:之前,不允许解除分配CBPeripal。这可以通过将外围设备分配给属性来轻松实现,例如。g、 :
@property (nonatomic, string) CBPeripheral *peripheral;
...
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral {
self.peripheral = peripheral
[peripheral discoverServices:<desired service UUIDs>];
...
}
好的,我解决了这个问题。我把CBUUID和NSUID弄混了 从iOS 10开始,CBU外围discoverServices仅接受CBUUID。nsuid不再工作了。也许nsuid只是在较旧的iOS版本上意外工作。文件明确指出: 表示要查找的服务类型的CBUUID对象列表
期待将应用程序移植到强类型Swift。好的,我解决了这个问题。我把CBUUID和NSUID弄混了 从iOS 10开始,CBU外围discoverServices仅接受CBUUID。nsuid不再工作了。也许nsuid只是在较旧的iOS版本上意外工作。文件明确指出: 表示要查找的服务类型的CBUUID对象列表
期待将应用程序移植到强类型Swift。谢谢,但这不能解决我的问题,因为CBPeripal由强引用持有。谢谢,但这不能解决我的问题,因为CBPeripal由强引用持有。谢谢你救了我。。值得一提的是,如果你输入了NSUID,它就不会发送错误消息,这让你很难找到你救了我的人。。值得一提的是,如果您放入nsuid,它就不会发送错误消息,这使得调试非常困难
NSArray *services = @[
[CBUUID UUIDWithString:ServiceUUID] //Correct
//[[NSUUID alloc] initWithUUIDString:ServiceUUID] //Does work on iOS 9 but not on iOS 10
];
[self.peripheral discoverServices:services];