CoreBluetooth中央管理器未发现多个设备

时间:2015-02-21 17:51:17

标签: ios swift core-bluetooth

我开发了一款Mac应用程序,可以使用CoreBluetooth发现并连接到多个iOS设备。我一直在测试只是我的iPhone,它已经发现它,连接到它,并交换数据。但是,最近我去其他iOS设备测试,Mac应用程序无法发现其他iOS设备。它只能发现我的个人iPhone,而不是其他人的iPhone。

在Mac方面我有

func centralManagerDidUpdateState(central: CBCentralManager!) {
    switch central.state {
    case CBCentralManagerState.PoweredOn:
        println("Central manager state POWERED ON")
        manager.scanForPeripheralsWithServices([UUID_SERVICE], options: nil)
    default: return
    }
}

在iOS方面我有

 func peripheralManager(peripheral: CBPeripheralManager!, didAddService service: CBService!, error: NSError!) {
    if error != nil {
        println("error: \(error)")
    } else {
        self.peripheralManager.startAdvertising([CBAdvertisementDataServiceUUIDsKey : [service.UUID]])
        println("advertising UUID")
    }
}

并且在每一种情况下都会调用iOS端的peripheralManagerDidStartAdvertising(peripheral: CBPeripheralManager!, error: NSError!)。但是,Mac应用程序只发现我的iPhone,而不是运行应用程序的任何其他iPhone。

如何发现运行该应用的所有iOS设备,而不仅仅是我的?

1 个答案:

答案 0 :(得分:0)

我已经有一个与此相关的问题:Core Bluetooth doesn't find peripherals when scanning for specific CBUUID

不幸的是,OS X上的Core Bluetooth似乎存在问题,这意味着在已经发现该服务之前,它无法通过特定服务CBUUID找到外围设备。在iOS中使用Core Bluetooth时,同样的问题并不明显。

我设法解决这个问题的唯一方法是,扫描所有设备,然后遍历他们的服务,看看他们是否是我真正感兴趣的外围设备。