【问题标题】:Proper way to implement CoreBluetooth connectPeripheral timeout?实现CoreBluetooth connectPeripheral超时的正确方法?
【发布时间】: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


【解决方案1】:

请检查 CBCentralManager 及其方法 connectPeripheral:options: 的 Apple 文档。第一件事 - 连接到外围设备的尝试不会超时,第二件事 - 您可以将委托设置为接收连接/断开连接通知。

https://developer.apple.com/library/mac/documentation/CoreBluetooth/Reference/CBCentralManager_Class/index.html#//apple_ref/occ/instm/CBCentralManager/connectPeripheral:options:

【讨论】:

  • 如果我没有完全阅读文档,您认为我能够引用 CBCentralManager 方法及其委托方法,以及描述连接尝试无限旋转的场景吗有点,以及实现了什么?
猜你喜欢
  • 2013-07-29
  • 1970-01-01
  • 2011-12-03
  • 2010-09-21
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多