2011-02-07 2 views
7

Работает ли платформа Core Motion во время работы приложения в фоновом режиме?Core Motion в фоновом режиме?

+0

Вы когда-нибудь находили удовлетворительный ответ? – hanno

+0

Я уже видел, как некоторые шагомеры получают данные о движении ядра после возвращения из фонового режима. поэтому должен быть способ сохранить данные через 'startAccelerometerUpdatesToQueue'. Для меня это работает несколько секунд/минут после того, как я положил приложение в фоновый режим, но через некоторое время он остановится. возможно, вам нужно использовать один из фоновых режимов (аудио, местоположение, voip), чтобы приложение «живое». – Hannes

ответ

0

Зависит от вашего определения работы ... Нужно ли продолжать работать в Core Animation или вы хотите заморозить представление? Когда приложение работает в фоновом режиме, разрешается запускать только определенные процессы. (Например, уведомления).

По большей части пользовательский интерфейс приложения и добавочный номер приостанавливается до тех пор, пока вы не запустите applicationDidBecomeActive. После того, как он снова запустится, он должен возобновиться, но снова не продолжать работать в фоновом режиме. То же самое можно сказать и для большинства игр на iOS под управлением OpenGL, это приостановлено до тех пор, пока приложение не будет активным снова.

0

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

0

Чтобы ваше приложение запускалось в фоновом режиме, вы должны объявить его фоновым заданием. Проблема в том, что есть только несколько UIBackgroundModes ... и движение не является одним из них.

Обходным путем может быть включение UIBackgroundMode location, которое предназначено, чтобы сообщить пользователям об их местоположении, даже если приложение находится в фоновом режиме. Затем вы можете обернуть свою логику движения. Тем не менее, явным недостатком этого является то, что это связано с использованием GPS, который значительно разрядит батарею ...

+1

Если разрешить фоновый режим местоположения, не забудьте добавить это утверждение в описание приложения в магазине приложений ** «Продолжение использования GPS, работающего в фоновом режиме, может значительно уменьшить срок службы батареи». ** В противном случае обзор магазина приложений не будет одобрен приложение. – Raymond

+1

Если ваше приложение явно не использует структуру основного расположения в фоновом режиме, у вас будет небольшая вероятность быть принятым. – jjatie

1

Структура Core Motion позволяет получить доступ к историческим данным для данных CMPedometer, поэтому, если ваше приложение использует это нет необходимости бегать в фоновом режиме.

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

Такое поведение представляется достаточным. Я не могу придумать пример использования Core Motion, где вам нужен постоянный фоновый доступ, исторические данные CMPedometer не достаточны и соответствуют правилам App Store.

+0

Вы правы на все, но есть пример использования CMPedometer, когда приложение находится в фоновом режиме: если вы показываете количество шагов в значке на значке приложения, вам нужно время от времени разбудить ваше приложение (когда режим фокуса iOS решает, что он подходит) и обновить его количество значков; так как вы не можете иметь доступ к текущему потоку, находясь в фоновом режиме, вы можете обойти его с помощью 'queryPedometerData (от start: Date, to end: Date, withHandler-обработчик: @escaping CMPedometerHandler)'. – cdf1982

+0

Я думаю, что Apple позволяет это делать, поскольку это необычно и в основном безвредно. – jjatie