CoreBluetooth可以同时充当中心和外设(未知错误0)吗?

时间:2013-12-04 01:06:10

标签: ios macos bluetooth core-bluetooth

我有一个OSX应用程序执行以下操作:

  1. 启动中央管理员[[CBCentralManager alloc] initWithDelegate:queue:]并等待初始化。
  2. 使用[CBCentralManager connectPeripheral:options:]
  3. 连接蓝牙LE外设
  4. 启动外围设备管理器[[CBPeripheralManager alloc] initWithDelegate:queue:options:]并等待其初始化。
  5. 将服务添加到外围设备管理器[CBPeripheralManager addService:]并等待它们完成添加。
  6. 开始宣传[CBPeripheralManager startAdvertising:]并等待结果。
  7. 现在,我的回调[CBPeripheralManagerDelegate peripheralManagerDidStartAdvertising:error:]收到错误:“错误域= CBErrorDomain代码= 0”未知错误。“ UserInfo = 0x7fb23bf7ba50 {NSLocalizedDescription =未知错误。}“。

    但是,如果我在[CBCentralManager cancelPeripheralConnection:]之前立即致电startAdvertising:,则错误就会消失。

    Mac是否无法同时兼顾中心角色和外围角色?这种限制是否也存在于iOS上?这是硬件特定的限制,还是蓝牙LE固有的?

    我正在使用OSX 10.9 Mavericks的2011年中期Mac Mini进行测试。

1 个答案:

答案 0 :(得分:1)

我可以确认iOS上的CoreBluetooth没有这个问题,至少在我最后一次在iPhone 5上的iOS 6上进行测试时没有。在与另一个BLE外围设备通话时,iPhone可以作为BLE外设发布广告作为BLE Central同时。我在OS X上没有结果。但是如果操作系统X在更强大的平台上有这样的限制,我会非常惊讶。