Фоновый режим работает по-разному для сканирования.
В каждом периферийном устройстве сообщается только о первом единственном его времени (вы не можете отслеживать близость через RSSI, не подключаясь к нему в фоновом режиме).
Вы можете инициировать запрос на подключение к периферийному устройству, которое находится за пределами диапазона, и соединение будет завершено, когда периферия станет доступной. Не нужно активно сканировать для этого (кроме начального обнаружения, поэтому вы знаете, к какому UUID подключиться).
Возможно, вы можете решить проблему, отправив запрос на соединение вместо сканирования, в то время как в фоновом режиме. Таким образом, iOS знает, что вас действительно интересует конкретное периферийное устройство, и я могу представить, что это влияет на время обнаружения.
Я хочу, чтобы мое приложение уведомлялось, когда меняются какие-либо значения RSSI моего подключенного периферийного устройства (фон). Что делать? – user1517635
Просто позвоните '[peripheral readRSSI];' (http://stackoverflow.com/questions/14933688/scan-peripheral-on-background/19857901#19857901) – l0gg3r
Спасибо за ваш быстрый ответ. Я пробовал это NSTimer * rssiTimer; [rssiTimer invalidate]; rssiTimer = [NSTimer timerWithTimeInterval: 1.0 target: периферийный селектор: @selector (readRSSI) userInfo: nil repeatats: YES]; [[NSRunLoop currentRunLoop] addTimer: rssiTimer forMode: NSRunLoopCommonModes]; Его работа прекрасна, когда приложение находится на переднем плане, но перестает читать значение rssi, когда приложение переходит в фоновый режим. – user1517635