我想检查我的iPhone连接到哪些蓝牙设备。为了做到这一点,我像这样使用CBCentralManager.retrieveConnectedPeripherals()
:
let connectedPerphs = centralManager.retrieveConnectedPeripherals(withServices: []);
我的问题是,即使我的iPhone已连接到BluetoothDongle(它在设置中明确表示“已连接”),由retriveConnectedPeripherals()
返回的列表也始终为空。我是否以错误的方式使用该方法,或者不能将其用于检测蓝牙连接,例如与加密狗的连接?如果是后者,我如何检测到该连接?
答案 0 :(得分:0)
让我清楚,centralManager.retrieveConnectedPeripherals
始终返回空值或nil
,如果您没有将任何值传递到serviceUUIDs
返回外围设备的列表(包含任何指定的 服务)当前已连接到系统。
serviceUUID:
服务UUID列表(由CBUUID对象表示)。
不幸的是,这是很长的路要走。您可以静态创建Array
中的CBUUID
,然后将其传递给方法。请参考下面的代码。
let aryUUID = ["1800","18811"]
var aryCBUUIDS = [CBUUID]()
for uuid in aryUUID{
let uuid = CBUUID(string: "1800")
aryCBUUIDS.append(uuid)
}
let connectedPerphs = centralManager.retrieveConnectedPeripherals(withServices: aryCBUUIDS)
答案 1 :(得分:0)
首先,这仅适用于BLE设备,因此,如果您的加密狗使用的是通用BT,您将无法从此处获得它,而是可能使用EAAccessoryManager
var connectedAccessories: [EAAccessory]
方法,但据我所知您的应用必须符合MFI。
这就是为什么要询问您的设备将作为筛选器公开哪些服务。