2014-10-04 3 views
0

Я заметил, что scanForPeripheralsWithServices не работает в фоновом режиме. Я попытался с следующим:iOS - Сканирование BLE devies в фоновом режиме

  1. указан UUID и опции ноль
  2. множества UIBackgroundModes Bluetooth-центральной и периферической Bluetooth-info.plist

Я хочу фоновую службу, которая должна сканировать BLE устройства в фоновом режиме непрерывно , Спасибо за помощь!

ответ

0

Фоновый режим работает по-разному для сканирования.

В каждом периферийном устройстве сообщается только о первом единственном его времени (вы не можете отслеживать близость через RSSI, не подключаясь к нему в фоновом режиме).

Вы можете инициировать запрос на подключение к периферийному устройству, которое находится за пределами диапазона, и соединение будет завершено, когда периферия станет доступной. Не нужно активно сканировать для этого (кроме начального обнаружения, поэтому вы знаете, к какому UUID подключиться).

Возможно, вы можете решить проблему, отправив запрос на соединение вместо сканирования, в то время как в фоновом режиме. Таким образом, iOS знает, что вас действительно интересует конкретное периферийное устройство, и я могу представить, что это влияет на время обнаружения.

+0

Я хочу, чтобы мое приложение уведомлялось, когда меняются какие-либо значения RSSI моего подключенного периферийного устройства (фон). Что делать? – user1517635

+0

Просто позвоните '[peripheral readRSSI];' (http://stackoverflow.com/questions/14933688/scan-peripheral-on-background/19857901#19857901) – l0gg3r

+0

Спасибо за ваш быстрый ответ. Я пробовал это NSTimer * rssiTimer; [rssiTimer invalidate]; rssiTimer = [NSTimer timerWithTimeInterval: 1.0 target: периферийный селектор: @selector (readRSSI) userInfo: nil repeatats: YES]; [[NSRunLoop currentRunLoop] addTimer: rssiTimer forMode: NSRunLoopCommonModes]; Его работа прекрасна, когда приложение находится на переднем плане, но перестает читать значение rssi, когда приложение переходит в фоновый режим. – user1517635

Смежные вопросы