gpt4 book ai didi

ios - swift 3 : Can't connect to peripheral via BLE

转载 作者:搜寻专家 更新时间:2023-10-30 22:14:56 26 4
gpt4 key购买 nike

我刚开始使用 BLE,目前正在尝试制作一个可以连接到我的自定义 BLE 设备的简单应用程序。我能够发现 BLE 设备,但由于某种原因我无法连接到它。我尝试使用“浅蓝色”对其进行检查,它显示我的设备可连接并且似乎工作正常。但是在我发现设备后,在我的应用程序中,CB 管理器尝试连接到它并且似乎“卡住”了?永远不会触发函数“didConnect peripheral”,并且 peripheral 的状态永远是“connecting”。

我如何识别问题?我可以在连接方法中包含任何选项,或者以某种方式跟踪连接过程吗?

我将不胜感激任何在何处寻找问题的建议。

在 XCode 8.2.1 中工作,使用 Swift 3。测试手机上安装了 iOS 10.2.1

这是我的代码:

import UIKit
import CoreBluetooth

class InfoPageViewController: UIViewController, CBCentralManagerDelegate, CBPeripheralDelegate {

var manager:CBCentralManager!
var peripheral:CBPeripheral!

let BEAN_NAME = "MyDevice"

override func viewDidLoad() {
super.viewDidLoad()

manager = CBCentralManager(delegate: self, queue: nil)
}

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {

let device = (advertisementData as NSDictionary)
.object(forKey: CBAdvertisementDataLocalNameKey)
as? NSString

if device?.contains(BEAN_NAME) == true {
self.manager.stopScan()

self.peripheral = peripheral
self.peripheral.delegate = self

manager.connect(peripheral, options: nil)

print("discovered \(BEAN_NAME)")

}
}

func centralManager(
central: CBCentralManager,
didConnect peripheral: CBPeripheral) {
print("connected to \(BEAN_NAME)")

peripheral.discoverServices(nil)
}

最佳答案

func centralManager(central: CBCentralManager, didConnect peripheral: CBPeripheral) {}
--------------------^

对比:

func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral)
--------------------^

方法的签名不正确,您缺少 _

方法签名很重要。我们可以假设,因为这些委托(delegate)方法是可选的,所以在内部,Apple 代码会问自己:我的委托(delegate)是否实现了方法 func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) (respondsToSelector:)?在你的情况下,不是,因为它不一样,然后你的就不会被调用。

您从文档中复制/粘贴或删除它,然后让 XCode 执行其自动完成操作。

关于ios - swift 3 : Can't connect to peripheral via BLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42090560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com