繁体   English   中英

如何使用Core Bluetooth Framework以最小化模式扫描“低能耗蓝牙设备”?

[英]How to scan 'Lower Energy Bluetooth Device' in minimize mode by using Core Bluetooth Framework?

我正在制作一个ios应用程序,该应用程序在iPhone的应用程序的``最小化''模式和``前台''(活动)模式下扫描BLE设备。 在前景模式下,它可以正常工作,但如果应用程序进入最小化模式,则扫描无法工作。

我还添加了“必需的背景模式”键

在此处输入图片说明

- (void)viewDidLoad
{
[super viewDidLoad];
CBCentralManager *centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
[centralManager scanForPeripheralsWithServices:nil options:@{CBCentralManagerScanOptionAllowDuplicatesKey : @YES}];
self.centralManager = centralManager;

}
// method called whenever the device state changes.
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
// Determine the state of the peripheral
if ([central state] == CBCentralManagerStatePoweredOff) {
    NSLog(@"CoreBluetooth BLE hardware is powered off");
}
else if ([central state] == CBCentralManagerStatePoweredOn) {
    NSLog(@"CoreBluetooth BLE hardware is powered on and ready");
}
else if ([central state] == CBCentralManagerStateUnauthorized) {
    NSLog(@"CoreBluetooth BLE state is unauthorized");
}
else if ([central state] == CBCentralManagerStateUnknown) {
    NSLog(@"CoreBluetooth BLE state is unknown");
}
else if ([central state] == CBCentralManagerStateUnsupported) {
    NSLog(@"CoreBluetooth BLE hardware is unsupported on this platform");
}
}


- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral  *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{

   NSLog(@"AdvertisementData:%@",advertisementData);
   }

首先,你应该等待,直到你得到centralManagerDidUpdateState:回调与响应状态CBCentralManagerStatePoweredOn你曾经打电话之前scanForPeripheralsWithServices:options: 实际上,您目前甚至能够在前台进行扫描,实在令人惊讶。

但是要注意的其他主要问题是,只要应用程序不在前台,就会忽略CBCentralManagerScanOptionAllowDuplicatesKey标志,并且扫描间隔会降低到前台的1/60。 因此,您需要确保中央设备之前没有发现外围设备,并且需要更长的时间在后台留出足够的时间。 只要用户授予您的应用程序在后台运行的权限,其他所有操作都应该可以。 仅确保您的测试过程有效,并且不要尝试查看重复的外围设备。

为了使应用程序在后台继续扫描,您需要使用以下方法: scanForPeripheralsWithServices:options:指定要扫描的服务,否则将无法正常工作。 对于前景扫描,它不是必需的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM