进入后台时停止BLE扫描?
Posted
技术标签:
【中文标题】进入后台时停止BLE扫描?【英文标题】:BLE scanning is stopped when go to background? 【发布时间】:2014-11-24 18:07:47 【问题描述】:我正在扫描硬件设备。 在前台时,我可以看到该设备。 当我在前台开始扫描,而不是移动到后台时,比我打开硬件-BLE,扫描停止,并且应用程序无法检测到硬件。
如果我将应用程序重新打开到前台,它会继续扫描并找到设备。
我已经设置好钥匙了:
<string>bluetooth-peripheral</string>
<string>bluetooth-central</string>
还有背景模式:
location updates
external accessory communication
uses BLE accessories
acts as BLE ACCESSORY
但什么都没有。系统不会让我检测后台设备,只检测前台设备。
我错过了什么?
【问题讨论】:
【参考方案1】:发现您必须设置您在后台查找的服务ID,否则它将无法正常工作。 无论如何,后台扫描非常缓慢,可能需要几分钟才能检测到!
[_centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:DEVICE_INFO_SERVICE_UUID]]
【讨论】:
【参考方案2】:您只能在后台扫描 BLE 以获得特定的 serviceUUID,您可以像我们在前台扫描一样通过传递 nil 进行扫描。
另外,请确保在主线程中启动 BLE 扫描并设置正确的选项,如下所示。
NSArray *services = @[[CBUUID UUIDWithString:UUID1],[CBUUID UUIDWithString:UUID2],[CBUUID UUIDWithString:UUID3]];
dispatch_async(dispatch_get_main_queue(), ^
[self.coreBluetoothManager scanForPeripheralsWithServices:services options:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], CBCentralManagerScanOptionAllowDuplicatesKey, nil]];
);
【讨论】:
以上是关于进入后台时停止BLE扫描?的主要内容,如果未能解决你的问题,请参考以下文章
Cordova:在后台模式下扫描 iBeacons / BLE(iOS 和 Android)