2015-05-11 1 views
0

Мое приложение использует аксессуары Bluetooth, поэтому я включаю соответствующий фоновый режим. Возможно ли постоянно получать данные гироскопа CoreMotion в фоновом режиме?Возможно ли получить данные о данных гироскопа, когда приложение находится в фоновом режиме

Сценарий заключается в сканировании и подключении периферийного устройства BLE, когда приложение находится в фоновом режиме. И чтобы обнаружить поворот телефона, когда приложение находится в фоновом режиме, и отправить что-то в устройство BLE, когда обнаружено некоторое движение.

Обновление данных гироскопа использует созданный нами NSOperationQueue. Он начинается, как только загружается первое представление.

Когда я тестирую его с помощью приложения на переднем плане, подключается периферийное устройство BLE, а затем помещается в фоновом режиме. Обновление данных гироскопа скоро прекращается. Когда я выхожу из диапазона BLE, данные гироскопа снова начинаются, а затем прекращаются. Я вошел в периферийный диапазон BLE, данные гироскопа снова показывают. (Я иду с iPhone, подключенным к ноутбуку с запуском XCode и видя его непосредственно из журналов).

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

ответ

1

Посмотрите на this question.

Похоже, вы не можете получить данные от CoreMotion без каких-либо других фоновых действий, таких как фоновое аудио или отслеживание GPS. Из моего опыта оба этих режима позволят вам выполнить код в фоновом режиме.

EDIT:
Использование BLE, убедитесь, что для передачи данных по Bluetooth, время от времени, чтобы держать IOS от подвешивания приложение для бездействия.

+0

У меня есть режим Bluetooth в фоновом режиме - bluetooth-central on. Но это, похоже, не делает этого непрерывно. Для моего приложения не имеет смысла использовать аудио или GPS-трекинг. Любые другие решения? – huggie

+0

Часто ли ваше устройство BT отправляет данные в ваше приложение? Поскольку это BLE, отсутствие связи может дать iOS возможность приостановить ваше приложение. Это может объяснить, почему вы получаете обновления CoreMotion, когда вы попадаете в диапазон и вне диапазона. –

+0

Работает, когда я повторяю запрос на обслуживание. Благодарю. Теперь нет способа гарантировать, что приложение будет работать бесконечно? В какой-то момент, если откроется много программ, это можно убить? – huggie

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