我有一个执行以下操作的OSX应用程序:
[[CBCentralManager alloc] initWithDelegate:queue:]
并等待其初始化。 [CBCentralManager connectPeripheral:options:]
连接到Bluetooth LE外围设备[[CBPeripheralManager alloc] initWithDelegate:queue:options:]
并等待其初始化。 [CBPeripheralManager addService:]
,并等待它们添加完成。 [CBPeripheralManager startAdvertising:]
,然后等待结果。 现在,我的回调
[CBPeripheralManagerDelegate peripheralManagerDidStartAdvertising:error:]
收到一个错误:“错误域= CBErrorDomain代码= 0“未知错误”。 UserInfo = 0x7fb23bf7ba50 {NSLocalizedDescription =未知错误。}”。但是,如果我在
[CBCentralManager cancelPeripheralConnection:]
之前立即调用startAdvertising:
,那么该错误就会消失。Mac是否不可能同时扮演中心角色和外围角色? iOS上是否也存在此限制?这是硬件特定的限制,还是Bluetooth LE中固有的限制?
我正在运行OSX 10.9 Mavericks的2011年中Mac Mini上进行测试。
最佳答案
我可以确认iOS上的CoreBluetooth没有此问题,至少当我上一次在iPhone 5上的iOS 6上对其进行测试时,至少没有这个问题。iPhone可以作为BLE外围设备做广告,同时与另一个BLE外围设备(如BLE Central)通话时间。我在OS X上没有结果。但是,如果OS X在功能更强大的平台上有这样的限制,我将感到非常惊讶。
关于ios - CoreBluetooth是否可以同时充当中心和外围设备(未知错误0)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20364911/