蓝牙后台模式 IOS

Bluetooth Background mode IOS

几天来我一直在寻找我的蓝牙问题,但没有找到任何有用的解决方案。我想通过 ios 应用程序在后台更准确地读取来自外围设备的制造数据。在我的例子中,外围设备是 Nordic nrf51822 芯片,中央设备是 ios phone。我已经成功实现了蓝牙后台​​模式,并且在 ios 设备上运行良好。当发现新的外围设备时,将调用事件处理程序 DiscoveredPeripheral。但问题是它只在外围设备第一次可见时被调用。如果我关闭并打开外围设备,则不再调用 DiscoverdPeripheral 事件。我知道这是 ios 限制,但我不知道如何处理这个 ios 限制。最后,我希望后台的那个应用程序开始定期扫描具有特定 UUID 的外围设备,例如,每 10 分钟一次。在这一点上,我想问一下这种情况是否可以在 ios 中实现,如果可以的话,我感谢您的帮助。

The Event handler DiscoveredPeripheral is called when the new peripheral device is discovered.

这是不正确的。每次调用 scanForPeripherals 只会调用一次。当设备连接时,您应该停止扫描。当设备断开连接时,您应该看到 centralManager(_:didDisconnectPeripheral:error:),您可以重新开始扫描。

更好的是,如果您只想重新连接到同一台设备,则根本不要扫描。只需为该外设 UUID 调用 connect。它会在您处于后台时继续 运行,并在连接成功时唤醒您。

要进一步推动这一点,请实施 Bluetooth State Restoration,这将使您即使在重新启动后也能自动重新连接。