我有一个OSX应用程序执行以下操作:
[[CBCentralManager alloc] initWithDelegate:queue:]
并等待初始化。[CBCentralManager connectPeripheral:options:]
[[CBPeripheralManager alloc] initWithDelegate:queue:options:]
并等待其初始化。[CBPeripheralManager addService:]
并等待它们完成添加。[CBPeripheralManager startAdvertising:]
并等待结果。现在,我的回调[CBPeripheralManagerDelegate peripheralManagerDidStartAdvertising:error:]
收到错误:“错误域= CBErrorDomain代码= 0”未知错误。“ UserInfo = 0x7fb23bf7ba50 {NSLocalizedDescription =未知错误。}“。
但是,如果我在[CBCentralManager cancelPeripheralConnection:]
之前立即致电startAdvertising:
,则错误就会消失。
Mac是否无法同时兼顾中心角色和外围角色?这种限制是否也存在于iOS上?这是硬件特定的限制,还是蓝牙LE固有的?
我正在使用OSX 10.9 Mavericks的2011年中期Mac Mini进行测试。
答案 0 :(得分:1)
我可以确认iOS上的CoreBluetooth没有这个问题,至少在我最后一次在iPhone 5上的iOS 6上进行测试时没有。在与另一个BLE外围设备通话时,iPhone可以作为BLE外设发布广告作为BLE Central同时。我在OS X上没有结果。但是如果操作系统X在更强大的平台上有这样的限制,我会非常惊讶。