Как улучшить надежность сканнера BLE в бекграунде в iOS?
Подозреваю, что у вас в настройках проекта прописано, что бэкграунд таски нужны для трека локации.
А система, в таком случае сама решает когда запустить ваш процесс для трека локации. Потому что она умнее.
Каждый раз одно и тоже. Запомните уже наконец:
- Cостояние,  когда ваше приложение находится в выключенном состоянии, вы не можете делать абсолютно НИЧЕГО. 
- Состояние,  когда ваше приложение находится в свернутом состоянии, вы можете делать лишь очень малое количество действий с ещё более малым отведенным под это дело временем. Время в данном случае абсолютно неконтролируемое. Система сама решает, когда и что нужно запускать в таком состоянии. 
Поэтому такого рода приложения, который пытаются что-то делать  в свёрнутом состоянии в нужное ИМ время не могут и не будут существовать. 
Коим я с Apple полностью согласен. Кому нужно приложение, которое по его прихоти будет делать в фоне, то, что оно хочет и главное, когда хочет. Если я его закрыл или свернул, значит оно мне не интересно.