重启蓝牙后重新连接时应用程序未发现服务
Posted
技术标签:
【中文标题】重启蓝牙后重新连接时应用程序未发现服务【英文标题】:App don't discover services when reconnecting after power cycling bluetooth 【发布时间】:2013-07-31 09:21:19 【问题描述】:当我在连接到CoreBluetooth
外围设备时切换蓝牙时,我会在centralManagerDidUpdateState
回调中断开并删除对我的外围设备的所有引用。
再次扫描将找到并重新连接到设备并再次发出discoverServices
,但这次回调didDiscoverServices
从未发生过。通过删除所有设置(常规 -> 重置 -> 重置所有设置)或重新启动它再次工作。正常断开/重新连接也可以。如何解决此问题或以编程方式删除 ios 存储的所有缓存和 UUID?
【问题讨论】:
【参考方案1】:当您收到 CentralManager 状态已更改为 CBCentralManagerStatePoweredOff
的回调时,您需要遍历所有外围设备并在它们上调用 cancelConnection:
。然后你就可以走了。
[_yourCentralManager cancelPeripheralConnection:yourPeripheral];
【讨论】:
不幸的是它没有用。它仍然没有得到didDiscoverServices
回调
事实上,你得到这个是你尝试在 .poweredOff: [CoreBluetooth] API MISUSE 上取消外围连接:如果中心状态是CBManagerStatePoweredOn
,则像这样调用cancelPeripheralConnection
API:
[self.centralManager cancelPeripheralConnection:self.peripheral];
将调用回调方法centralManager:didDisconnectPeripheral:error:
。但是如果状态不是CBManagerStatePoweredOn
,比如CBManagerStatePoweredOff
,这个回调就不会执行。
【讨论】:
以上是关于重启蓝牙后重新连接时应用程序未发现服务的主要内容,如果未能解决你的问题,请参考以下文章