我正在编写一款iOS应用程序,将使用低功耗蓝牙(BLE)与设备进行通信。
当我的已连接设备超出范围时,我的应用程序会收到断开连接事件。
但是当设备重新回到范围时,我没有收到任何连接事件。
请建议任何一种方法来检测设备何时回到范围内。
我正在编写一款iOS应用程序,将使用低功耗蓝牙(BLE)与设备进行通信。
当我的已连接设备超出范围时,我的应用程序会收到断开连接事件。
但是当设备重新回到范围时,我没有收到任何连接事件。
请建议任何一种方法来检测设备何时回到范围内。
当您的设备断开连接或超出蓝牙范围时,您无需扫描外围设备,因为它已经扫描了BLE设备。
当BLE设备断开连接时,请在didDisconnectPeripheral
委托方法中调用函数[centralObj connectPeripheral:peripheral options:nil];
。
当您收到设备不再可达的事件时,可以启动一个方法来持续检查设备是否仍然不可达。
例如:while(isConnected==false)... 您说如果设备断开连接会收到通知,因此您可以使用该事件来启动这样的方法。
scanForPeripheralsWithServices
或者您可以设置扫描模式以接受重复键:[_manager scanForPeripheralsWithServices:self.targetDeviceServiceIDs options:@{CBCentralManagerScanOptionAllowDuplicatesKey:@YES}]
。这意味着相同的设备会被发现多次,直到您停止扫描。- centralManager:didConnectPeripheral:
或
- centralManager:didFailToConnectPeripheral:error:
- Terence如果连接超时,只需在断开方法中重新连接即可。无需开始扫描,它会自动尝试重新连接直到进入范围。