我目前正在使用swift制作一个可以在附近生成蓝牙设备列表的应用。但是,我找不到任何使用swift做到这一点的文档。所有文件都在Objective C中,我想知道是否可以制作一个 objective-c 文件并直接连接到故事板? (我的项目文件很快)。
另外,我是否必须从外部包括其他任何库? (例如:serialGATT)还是coreBluetooth.framework足够好吗?
最佳答案
您必须导入CoreBluetooth
import CoreBluetooth
将
CBCentralManagerDelegate
添加到您的控制器。 (对于一个简单的应用程序,我将其附加到我的View Controller中) class ViewController: UIViewController, CBPeripheralDelegate, CBCentralManagerDelegate {
您应该创建一个局部变量
centralManager
(或类似变量),然后在viewDidLoad
函数中进行初始化 centralManager = CBCentralManager(delegate: self, queue: nil)
最后,您可以创建一个名为
centralManagerDidUpdateState
的新函数,该函数将在蓝牙状态更改时充当回调(始终在应用程序启动时调用。 // If we're powered on, start scanning
func centralManagerDidUpdateState(_ central: CBCentralManager) {
print("Central state update")
if central.state != .poweredOn {
print("Central is not powered on")
} else {
print("Central scanning for", ParticlePeripheral.particleLEDServiceUUID);
centralManager.scanForPeripherals(withServices: [ParticlePeripheral.particleLEDServiceUUID],
options: [CBCentralManagerScanOptionAllowDuplicatesKey : true])
}
}
重要的调用是
centralManager.scanForPeripherals
这将启动扫描过程。就我而言,我要过滤的广告包中仅包含ParticlePeripheral.particleLEDServiceUUID
的设备。那应该让您扫描并继续前进。我写了一个完整的端到端教程,介绍如何将Swift与蓝牙配合使用。它将更加详细。 Here it is.
关于ios - 快速找到附近的蓝牙设备,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30974189/