我有两个应用程序在OSX上运行一个,在iOS上运行一个。使用CoreBluetooth框架在它们之间建立蓝牙连接,并添加了对iOS应用程序的后台功能的支持。这工作得非常好,即使在后台运行一段时间后,在后台与iOS应用程序的通信仍然有效。
但是,当iOS设备超出范围时,我必须使用retrievePeripheralsWithIdentifiers在设备返回范围时重新连接,因为应用程序在后台,因此我无法扫描它,因为它的UUID不会被通告({ {3}}。我尝试将retrieveConnectedPeripheralsWithServices与前台的iOS应用程序一起使用以确定问题所在,但该函数总是返回一个空数组,虽然连接已经建立。对于前一种情况,我传递了我的自定义服务于as mentioned in Core Bluetooth Background Processing for iOS Apps):
let connectedPeripherals = centralManager!.retrieveConnectedPeripheralsWithServices([CBUUID(string: "109F17E4-EF68-43FC-957D-502BB0EFCF46")])
尝试让外围设备在后台重新连接到OSX应用程序,使用
let peripherals = centralManager!.retrievePeripheralsWithIdentifiers([NSUUID(UUIDString: "109F17E4-EF68-43FC-957D-502BB0EFCF46")!])
根据documentation也产生一个空数组。另外要提一下,我在前台尝试了iOS应用程序这个功能,但也无济于事。
知道这里可能出现什么问题吗?