如何在iOS中列出可发现的蓝牙设备和已配对的设备?在swift中应该使用哪种方法?

6

我希望用swift在我的应用程序中包含蓝牙功能。我想列出所有附近/可发现的外围设备,包括那些已经配对的设备。

我应该使用哪种方法来列出已配对的设备。我正在使用CoreBlutooth框架来实现蓝牙可用性检查。如果蓝牙正常工作,我想列出已配对的设备。如果可能,请提供从列出的已配对设备直接连接设备的方法。

 func startUpCentralManager() {
    println("Initializing central manager")
    centralManager = CBCentralManager(delegate: self, queue: nil)


}



func centralManagerDidUpdateState(central: CBCentralManager!) {
    println("\(__LINE__) \(__FUNCTION__)")
     println("checking state")

    if central.state != .PoweredOn {
        // In a real app, you'd deal with all the states correctly
                    return
    }
    central.scanForPeripheralsWithServices(nil,options:nil)


}

//这个方法没有触发

  func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) {

    var localname: NSString = advertisementData[CBAdvertisementDataLocalNameKey]! as NSString

    println("Discovered\(peripheral.name)")

    if localname != " "
    {
        centralManager!.stopScan()
        //self.peripheral = peripheral
        peripheral.delegate = self
        centralManager!.connectPeripheral(peripheral, options: nil)


    }


}

如果不需要显示附近的外设,是否需要这些方法?如果不需要,则需要实现哪些方法和代码?

提前感谢。

1个回答

5

CoreBluetooth 只允许您访问蓝牙低功耗设备。如果需要加密,您可以配对这些设备,但通常情况下不需要。

然而,没有API来列出已配对的设备 - 您需要发现提供您感兴趣服务的设备,并在应用中必要时使用自己的UI呈现列表。一旦您确定了目标设备,即可启动连接。


2
简而言之,您需要实例化一个CBCentralManager - 当您收到状态委托方法的回调时,即它已经启动,然后您可以开始扫描 - 扫描所有外围设备或提供特定服务的外围设备。对于每个发现的外围设备,都会调用您的委托方法。 - Paulw11
1
实际上,抱歉,你的代码使用 != 是正确的 - 我没有好好读它!您的didUpdateState方法被调用了吗?周围有任何BLE外设吗?尝试从应用商店下载LightBlue应用 - 看看它是否能够检测到外设。 - Paulw11
1
但是该方法尚未被调用以显示外围设备。该设备显示在我的普通iPhone设置中。func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) { var localname: NSString = advertisementData[CBAdvertisementDataLocalNameKey]! as NSString println("Discovered\(peripheral.name)") } 我已经在iPhone和iPad上运行了该应用程序,但该方法尚未被调用。我认为代码有些问题。 - SARATH SASI
1
如果该设备出现在您的iPhone设置中,则很有可能它不是BLE设备。那么这是什么样的设备呢?请尝试使用免费的LightBlue应用程序 - 您的代码看起来是正确的。 - Paulw11
1
你不能使用Core Bluetooth来操作蓝牙耳机。你可以在设置中将它们配对,然后使用AVAudioSession框架路由音频。使用CoreBluetooth,你可以与其他iOS设备通信,但你需要在另一个设备上运行一个应用程序作为外围设备。 - Paulw11
显示剩余15条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接