当 iPhone 被锁定时,CBCentralManager 不调用 didDiscoverPeripheral 方法

CBCentralManager not calling didDiscoverPeripheral method when iPhone is locked

我正在开发一个扫描特定外围设备的应用程序,发现某个外围设备应该发送少量数据。

应用程序在前台和后台运行。我还在 plist

中添加了这段代码

UIBackgroundModes 蓝牙中心 当 iPhone 被锁定并且外设开始广告时,它不会调用

func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) {

我做了一些研究,但找不到答案。

感谢任何帮助。

谢谢

保存发现的 CBPeripheral 实例。

var activePeripheral: CBPeripheral!

或者将其添加到数组中。如果您正在发现不止一种外设。

var knownPeripherals = [CBPeripheral]()

这样您就可以重新连接到您需要的任何 CBPeripheral(如果它可用,显然)。

当外围设备断开连接时调用此委托方法optional func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error error: NSError?)。您可以通过尝试重新连接到您的外围设备来尝试使用它来为您带来好处。

最后,您应该查看 performing long-term actions in background 的 Apple 参考资料。

希望对您有所帮助!