我有一个执行以下操作的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/

    10-10 07:06