Можно ли получать обновления данных гироскопа, когда приложение находится в фоновом режиме?
Мое приложение использует аксессуары Bluetooth, поэтому я включаю соответствующий фоновый режим. Можно ли непрерывно получать данные гироскопа CoreMotion в фоновом режиме?
Сценарий заключается в сканировании и подключении периферийного устройства BLE, когда приложение находится в фоновом режиме. И для обнаружения поворота телефона, когда приложение находится в фоновом режиме, и для отправки чего-либо на устройство BLE, когда обнаруживается какое-либо движение.
Обновление данных гироскопа использует созданную мной NSOperationQueue. Это начинается, как только загружен первый вид.
Когда я тестирую его с приложением на переднем плане, подключается периферийное устройство BLE, а затем помещается в фоновом режиме. Обновление данных гироскопа скоро прекращается. Когда я выхожу за пределы диапазона BLE, данные гироскопа начинаются снова, а затем прекращаются. Я вошел в периферический диапазон BLE, данные гироскопа снова показывают. (Я иду с iPhone, подключенным к ноутбуку с запущенным XCode, и вижу его прямо из журналов).
Есть ли способ надежно получать данные гироскопа в любое время, даже если приложение находится в фоновом режиме?
2 ответа
Посмотрите на этот вопрос.
Похоже, вы не можете получить данные из CoreMotion без какой-либо другой фоновой активности, такой как фоновое аудио или GPS-отслеживание. По моему опыту, оба эти режима позволят вам выполнять код в фоновом режиме.
РЕДАКТИРОВАТЬ:
Используя BLE, время от времени отправляйте данные по Bluetooth, чтобы iOS не приостанавливала работу вашего приложения.
Чтобы подтвердить и добавить к принятому ответу (поиск обновлений фонового движения на iOS привел меня сюда). Да, для работы обновлений CoreMotion должны выполняться некоторые другие фоновые действия. Я создал простое приложение для iOS , включающее шаблон, необходимый для изучения фоновых обновлений CoreLocation и CoreMotion.
AppDelegate
и
ViewController
документированы в той или иной степени. Протестировано на XS Max под управлением iOS 14.2. Надеюсь, понятно и, возможно, полезно кому-то еще, начинающему изучать те же области.