我开发了一款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设备,而不仅仅是我的?
答案 0 :(得分:0)
我已经有一个与此相关的问题:Core Bluetooth doesn't find peripherals when scanning for specific CBUUID
不幸的是,OS X上的Core Bluetooth似乎存在问题,这意味着在已经发现该服务之前,它无法通过特定服务CBUUID找到外围设备。在iOS中使用Core Bluetooth时,同样的问题并不明显。
我设法解决这个问题的唯一方法是,扫描所有设备,然后遍历他们的服务,看看他们是否是我真正感兴趣的外围设备。