【发布时间】:2015-12-05 13:48:21
【问题描述】:
鉴于蓝牙似乎在一端关闭时超时连接很好,我认为CBCentralManager connectPeripheral:options:方法如果在一定时间后无法连接会自动超时(因为也许我已经关闭/重置目标外围设备在我扫描它和用户选择它进行连接之间的过渡)。
我查看了options 参数以寻找可能的超时参数,但没有这样的运气。
启动NSTimer 的正确技术是否正确,如果计时器到期,最终会触发cancelPeripheralConnection:,以及centralManager:didConnectPeripheral: 和朋友中的invalidate 计时器?
【问题讨论】:
-
简短的回答是,如果您希望连接尝试超时,那么您需要按照您的建议使用计时器自己构建它。
-
谢谢。你应该把它作为一个真正的答案。 :)
-
@TravisGriggs 你明白了吗?我也在寻找最佳的方法来做到这一点。一种方法是检查函数中外设的 RSSI 值。如果信号强度太低,您可以暂停该过程。
-
检查 RSSI 需要连接到设备,计时器是唯一可靠的方法。
-
@Jobs 和 RSSI 在连接因未知原因而卡住时无济于事 - 我在基于 Android 的外围设备的实验中经历过这种情况。 iPhone 只是坐在那里等待连接成功/失败事件,但它不会到来,直到 Android 外围设备完全关闭。因此,有时暴力超时是恢复的唯一方法 - 再次开始扫描并重新连接到外围设备。
标签: ios ios8 core-bluetooth