Kat*_*e H 4 core-bluetooth bluetooth-lowenergy cbperipheral swift cbperipheralmanager
在我的Swift应用程序中,我有一个应该找到蓝牙设备并连接到它的视图.蓝牙设备已开机.我能够扫描并找到该设备,然后我调用该功能连接到它,但我得不到任何反馈.我不确定为什么它无法连接.
didFailToConnectPeripheral或didConnectPeripheral都没有返回任何值.
我如何让它工作?
import UIKit
import CoreBluetooth
class ViewController: UIViewController, CBCentralManagerDelegate, CBPeripheralDelegate {
var manager: CBCentralManager!
override func viewDidLoad() {
super.viewDidLoad()
manager = CBCentralManager (delegate: self, queue: nil)
}
func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {
print("Peripheral: \(peripheral)")
manager.connectPeripheral(peripheral, options:nil)
manager.stopScan()
}
func centralManager(central: CBCentralManager, didConnectPeripheral peripheral: CBPeripheral) {
print("connected!")
}
func centralManager(central: CBCentralManager, didDisconnectPeripheral
peripheral: CBPeripheral, error: NSError?) {
print("disconnected!")
}
func centralManager(central: CBCentralManager,
didFailToConnectPeripheral peripheral: CBPeripheral, error: NSError?) {
print("failed")
}
func centralManagerDidUpdateState(central: CBCentralManager) {
print("Checking")
switch(central.state)
{
case.Unsupported:
print("BLE is not supported")
case.Unauthorized:
print("BLE is unauthorized")
case.Unknown:
print("BLE is Unknown")
case.Resetting:
print("BLE is Resetting")
case.PoweredOff:
print("BLE service is powered off")
case.PoweredOn:
print("BLE service is powered on")
print("Start Scanning")
manager.scanForPeripheralsWithServices(nil, options: nil)
default:
print("default state")
}
}
}
Run Code Online (Sandbox Code Playgroud)
您需要保留CBPeripheral您尝试连接的对象,否则一旦委托方法didDiscoverPeripheral返回就会释放它.
import UIKit
import CoreBluetooth
class ViewController: UIViewController, CBCentralManagerDelegate, CBPeripheralDelegate {
var manager: CBCentralManager!
var connectingPeripheral: CBPeripheral?
override func viewDidLoad() {
super.viewDidLoad()
manager = CBCentralManager (delegate: self, queue: nil)
}
func centralManager(central: CBCentralManager, didDiscoverPeripheral peripheral: CBPeripheral, advertisementData: [String : AnyObject], RSSI: NSNumber) {
print("Peripheral: \(peripheral)")
self.connectingPeripheral=peripheral
manager.connectPeripheral(peripheral, options:nil)
manager.stopScan()
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3727 次 |
| 最近记录: |