我正在尝试从我的iOS设备连接到的蓝牙外围设备获取服务列表。retrieveconnected外设是这样做的吗?如果是这样的话,我需要什么样的CBUuid来检索一个带有免提服务的外设。
import CoreBluetooth
class TopVC: UIViewController, CBCentralManagerDelegate, CBPeripheralDelegate {
var centralManager: CBCentralManager!
var peripheral: CBPeripheral!
override func viewDidLoad() {
super.viewDidLoad()
centralManager = CBCentralManager(delegate: self, queue: nil)
}
// required protocol method
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if central.state == .poweredOn {
self.centralManager.retrieveConnectedPeripherals(withServices: [CBUUID])
} else {
print("bluetooth not available")
}
}
}
最佳答案
通常您可以从func scanForPeripherals(withServices serviceUUIDs: [CBUUID]?, options: [String : Any]? = nil)
开始扫描可用的bt设备。然后,当找到新设备时,将调用代理。func retrieveConnectedPeripherals(withServices serviceUUIDs: [CBUUID]) -> [CBPeripheral]
立即为您提供当前连接的bt设备列表,这些设备无法告诉您以前连接过什么。通常可以传递一个空数组,这将帮助您获取所有连接的设备。
如何创建CBUUID
实例?
/*!
* @method UUIDWithString:
*
* @discussion
* Creates a CBUUID with a 16-bit, 32-bit, or 128-bit UUID string representation.
* The expected format for 128-bit UUIDs is a string punctuated by hyphens, for example 68753A44-4D6F-1226-9C60-0050E4C00067.
*
*/
public /*not inherited*/ init(string theString: String)
let uuid = CBUUID(string: "XXXXXXX")
通常,如果检索空数组为
CBUUID
的已连接外设,则将检索已连接外设的空列表。这是安全原因造成的。因此,必须指定一些CBUUID
才能检索具有指定CBService
的外围设备。