2014-11-24 2 views
4

Я просматриваю аппаратное устройство. Когда на переднем плане я вижу устройство. Когда я запускаю сканирование на переднем плане, а не перемещаюсь на задний план, чем включаю аппаратное-BLE, сканирование останавливается, и приложение не может обнаружить аппаратное обеспечение.Сканирование BLE останавливается при переходе на задний план?

Если я открою приложение на переднем плане, он продолжит сканирование и найдет устройство.

Я поставил ключи:

<string>bluetooth-peripheral</string> 
     <string>bluetooth-central</string> 

, а также фоновые режимы:

location updates 
external accessory communication 
uses BLE accessories 
acts as BLE ACCESSORY 

Но ничего. система не позволит мне обнаруживать устройства на фоне, только на переднем плане.

Что мне не хватает?

ответ

0

Было установлено, что вы должны установить идентификатор службы, который вы ищете в фоновом режиме, иначе это не сработает. В любом случае сканирование в фоновом режиме очень медленно и может занять несколько минут, чтобы обнаружить!

[_centralManager scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:DEVICE_INFO_SERVICE_UUID]] 
0

Вы можете сканировать BLE в фоновом режиме только для конкретного serviceUUID, вы можете сканировать, передавая ноль, как мы делаем для переднего плана сканирования.

Кроме того, убедитесь, что вы запустили сканирование 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]]; 
}); 
Смежные вопросы