CoreBluetooth反复断开连接

7

我已经仔细查看了这个问题,但是似乎没有人遇到过。

我有两个iPad。其中一个充当始终在前景的蓝牙外设。由于我更关心中央方面,因此我将我的中央iPad设置为支持BLE-central的后台功能。我的工作流程如下:

  1. 中央应用程序运行并开始扫描
  2. 外设广告服务(或进入范围内)
  3. 中央设备连接到外设并停止扫描
  4. 外设停止广告(或离开范围)
  5. 中央设备断开连接并开始扫描
  6. 在中央处于前景或后景时,无缝执行步骤1-5

当我运行中央iPad应用程序时,步骤3和5每10秒重复一次,即使服务整个时间都在被广告。这发生在前景和后景中。

断开连接时,我会收到以下错误:

Error occurred while disconnecting peripheral: The specified device has disconnected from us.

你有没有想过为什么它会一直断开连接?如果没有传输数据,CoreBluetooth是否会清除连接?目前,我的中心设备只是单次读取外围设备的特征值。它没有订阅更新,因为这些值是静态的。

感谢!
1个回答

8
在我的情况下,解决方案是无论值是否静态,都要订阅该特征。似乎订阅将保持连接活动状态,而如果您读取一次性值,框架将尝试节省电池寿命并且断开连接,并强制您在执行另一个读取或写入操作之前手动重新连接。

1
嗨,我遇到了相同的情况,即使我订阅了特征(peripheral.setNotifyValue(true, for: characteristic)),如果没有数据传输,连接仍然会在一段时间后丢失,你能告诉我你的解决方案吗? - Gocy015
好的答案。当我订阅至少一个特征时,我遇到了类似的问题,这些问题得到了缓解。我想知道你是怎么知道这个小窍门的,或者在文档中哪里可以找到它? - jimBeaux27

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接