//MARK: -- 中心管理器的代理
extension LLBlueTooth : CBCentralManagerDelegate{
// MARK: 检查运行这个App的设备是不是支持BLE。
func centralManagerDidUpdateState(_ central: CBCentralManager){
if #available(iOS 10.0, *) {
switch central.state {
case CBManagerState.poweredOn:
print("蓝牙打开")
case CBManagerState.unauthorized:
print("没有蓝牙功能")
case CBManagerState.poweredOff:
print("蓝牙关闭")
default:
print("未知状态")
}
}
// 手机蓝牙状态发生变化,可以发送通知出去。提示用户
}
// 开始扫描之后会扫描到蓝牙设备,扫描到之后走到这个代理方法
// MARK: 中心管理器扫描到了设备
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
// 在这个地方可以判读是不是自己本公司的设备,这个是根据设备的名称过滤的
guard peripheral.name != nil , peripheral.name!.contains("*****") else {
return
}
// 这里判断重复,加到devielist中。发出通知。
}
// MARK: 连接外设成功,开始发现服务
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral){
// 设置代理
peripheral.delegate = self
// 开始发现服务
peripheral.discoverServices(nil)
// 保存当前连接设备
self.peripheral = peripheral
// 这里可以发通知出去告诉设备连接界面连接成功
}
// MARK: 连接外设失败
func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) {
// 这里可以发通知出去告诉设备连接界面连接失败
}
// MARK: 连接丢失
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
NotificationCenter.default.post(name: Notification.Name(rawValue: "DidDisConnectPeriphernalNotification"), object: nil, userInfo: ["deviceList": self.deviceList as AnyObject])
// 这里可以发通知出去告诉设备连接界面连接丢失
}
}
3***@qq.com
- 发布:2024-06-05 10:52
- 更新:2024-06-05 10:52
- 阅读:94
0 个回复