蓝牙retrieveConnectedPeripherals swift需要什么CBUUID

时间:2017-03-07 19:19:22

标签: swift core-bluetooth

我正在尝试从我的iOS设备连接的蓝牙外围设备获取服务列表。 retrieveConnectedPeripherals是这样做的吗?如果是这样,我需要什么样的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")
    }
 }

}

1 个答案:

答案 0 :(得分:2)

通常您可以从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的外围设备。