蓝牙背景模式IOS

时间:2018-10-29 15:52:43

标签: ios bluetooth background core-bluetooth

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

1 个答案:

答案 0 :(得分:0)

  

发现新的外围设备时,将调用事件处理程序DiscoveredPeripheral。

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

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

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