Можно ли получать обновления данных гироскопа, когда приложение находится в фоновом режиме?

Мое приложение использует аксессуары 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. Надеюсь, понятно и, возможно, полезно кому-то еще, начинающему изучать те же области.

Другие вопросы по тегам