我尝试用’浅蓝’检查它,它显示我的设备可连接,似乎工作正常.但在我发现设备后,我的应用程序,CB经理尝试连接到它,似乎“冻结”?功能’dIDConnect peripheral’永远不会被触发,外设状态永远是’连接’.
我该如何识别问题?我可以在连接方法中包含任何选项,还是以某种方式跟踪连接过程?
我很感激任何建议在哪里寻找问题.
在XCode 8.2.1中工作,使用Swift 3. iOS 10.2.1安装在测试手机上
这是我的代码:
import UIKitimport CoreBluetoothclass 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)--------------------^
方法的签名不正确,你错过了_.
方法签名很重要.
我们可以假设,因为这些委托方法是可选的,在内部,Apple代码会自行询问:
我的代理是否有方法func centralManager(_ central:CBCentralManager,dIDConnect peripheral:CBPeripheral)实现(respondsToSelector :)?在你的情况下,不是,因为它不一样,然后你的不被调用.
您从文档中复制/粘贴一个或删除它,让XCode执行自动完成 *** 作.
总结以上是内存溢出为你收集整理的ios – Swift 3:无法通过BLE连接到外设全部内容,希望文章能够帮你解决ios – Swift 3:无法通过BLE连接到外设所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)