我在 iPhone 5S 上使用蓝牙 LE,我做了以下事情:
我有一个蓝牙外围设备,我已将其配置为在所有三个蓝牙广告通道(37、38 和 39)上每 20 毫秒进行一次广告。
我在 Info.plist 中使用 UIBacgroundModes = bluetooth-central 配置了我的应用程序
我已经开始了如下所示的 scanForPeripheralsWithServices
代码:
NSDictionary *options = @{
CBCentralManagerOptionRestoreIdentifierKey:@"myCentralManagerIdentifier",
CBCentralManagerScanOptionAllowDuplicatesKey:[NSNumber numberWithBool:YES]
};
self.manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:options];
[self.manager scanForPeripheralsWithServices:[NSArray arrayWithObject:[CBUUID UUIDWithString:@"<uuid removed>"]] options:options];
目前的状态是:
在前台模式下,当我启动外围设备时(在一秒钟内),应用程序会快速接收广告消息
在后台模式下,应用程序有时会在启动外围设备后 10 秒内收到广告消息(即使它很糟糕也是可以接受的),但它通常很长时间(几分钟或更长时间)都没有收到广告,这不会为应用程序工作。
问题是:
当扫描应用程序处于后台时,是否可以通过某种方式提高 iOS 扫描蓝牙 4.0 LE 外围设备的速率?由于我认为没有公共 API 可以执行此操作,因此我正在寻找 Apple 未发布的私有 API。这适用于内部企业应用程序,因此私有 API 完全可以。