【发布时间】:2016-10-13 14:44:15
【问题描述】:
这是我的场景:
我连接了两个外围设备,将我的应用程序置于后台模式并开始使用外围设备,直到它们与我的应用程序失去连接。回来时,它们在到达时不再连接。
当我在应用程序在前台运行时执行相同的实验时,没有发生任何问题 - 将外围设备靠近 iPhone 会导致重新连接。
但是,我在控制台中看到,当外围设备失去连接时,正在调用 DidDisconnectPeripheral 方法。问题是这个方法内部没有调用扫描
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
numberOfTagsSending = numberOfTagsSending - 1
numberOfConnectedTags = numberOfConnectedTags - 1
print("Tag was disconnected. Start scanning.")
synchronizer.alreadySynced = false
central.scanForPeripherals(withServices: arrayOfServices, options: [CBCentralManagerScanOptionAllowDuplicatesKey : true])
}
我阅读了this 的答案,并以完全相同的方式进行了所有操作,不幸的是它不起作用。
提前致谢
【问题讨论】:
-
你试过在
Application: didEnterBackground调用这个函数吗? -
好吧,老实说我没有。但是我从来没有找到任何我应该从 AppDelegate 显式调用它的信息
-
尝试一下,看看它是否在后台工作,如果没有,那么你的
central.scanForPeripherals()方法一定有问题,因为你的问题没有正确设置。 -
@KSigWyatt 这也不起作用
-
无需扫描。只需在
didDisconnectPeripheral中调用connect,当它再次可见时,iOS 将自动重新连接到外围设备。什么对象持有您的 CBCentralManager 实例?是单例吗?
标签: ios swift core-bluetooth