CoreBluetooth 中是否存在 didLostPeripheral(或类似方法)

Does a didLostPeripheral (or similar method) exists in CoreBluetooth

CoreBluetooth 中是否存在与 didDiscoverPeripheral: 相反的 didLostPeripheral 方法?外围设备停止广告时调用的方法。我很确定答案是 no 但我宁愿错也不愿后悔。我没有在 CBCentralManagerDelegate 中找到任何类似的提及。

动机
这个想法是为了能够维护一个 active 外围设备列表来宣传特定服务

Post 脚本
我希望找到类似于 NSNetServiceBrowserDelegate, found in NSNetService 的委托方法,但这是一个具有不同目的的不同框架。

如您所料,答案是否定的。如果您连接到外围设备,那么当外围设备超出范围时,您将获得 didDisconnect 委托回调。

如果您的应用程序 运行 在前台,那么您可以使用 allowDuplicates 扫描键重复接收广告包。然后,您可以维护自己的所见外围设备列表。

一般的算法是这样的:

  • 当看到外围设备时 (didDiscover) 将其添加到列表中,如果不存在并将年龄设置为 0
  • 每秒迭代列表,增加年龄。删除任何年龄为 5
  • 的外围设备