Я использую Bluetooth LE на iPhone 5S, и я сделал следующее:
-
У меня есть периферийное устройство bluetooth, и я настроил его для рекламы каждые 20 мс на всех трех рекламных каналах bluetooth (37, 38 и 39).
-
Я настроил свое приложение с UIBacgroundModes = bluetooth-central в Info.plist
-
Я запустил 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 для периферийных устройств Bluetooth 4.0 LE, когда приложение сканирования находится в фоновом режиме? Поскольку я не думаю, что для этого существует общедоступный API, я ищу частный API, который не публикуется Apple. Это для внутреннего корпоративного приложения, поэтому частный API будет в порядке.