Я тестировал новые API-интерфейсы Motion Activity Manager (CMMotionActivityManager
). Я хочу создать приложение, которое может получать и обрабатывать обновления движения от startActivityUpdatesToQueue
, пока приложение не работает на переднем плане. Я правильно получаю обновления движения (стационарные, ходячие, бегущие, автомобильные, неизвестные), в то время как приложение находится на переднем плане, но как только он переходит в фоновый режим (и, таким образом, приостанавливается), обновления движения перестают получать приложение.CMMotionActivityManager - получение обновлений активности движения, когда приложение приостановлено или в фоновом режиме
CMMotionActivityManager Class Reference:. «Этот метод инициирует отслеживание данных движения асинхронно После вызова этого метода, менеджер активности движения выполняет блок обработчика на указанную очереди, сообщая текущее движение в силе для устройства После этого. менеджер активности движения выполняет блок обработчика только при изменении данных движения. Блок обработчика выполняется с максимальной эффективностью, и обновления не доставляются во время приостановки приложения. Если обновления были установлены во время приостановки приложения, последнее обновление будет доставлено для вашего приложения, когда оно возобновляет выполнение. Чтобы получить все обновления, которые произошли во время приостановки приложения, используйте метод queryActivityStartingFromDate:toDate:toQueue:withHandler:
».
Я хочу, чтобы мое приложение работало в фоновом режиме и получало данные движения (в режиме реального времени). В настоящее время единственным способом сохранить приложение в фоновом режиме является использование фоновых служб, но «обновление движения» не входит в список разрешенных фоновых услуг:
App Store Review Guidelines: «Приложения для многозадачности могут использовать только фоновые службы для их предполагаемых цели: VoIP, воспроизведение звука, местоположение, завершение задачи, локальные уведомления и т. д. » Я не хочу постоянно обновлять местоположение (GPS) (чтобы сэкономить аккумулятор). Если я буду постоянно обновлять местоположение, но отключить GPS, приложение будет приостановлено.
Пожалуйста, дайте мне знать, как сохранить приложение в фоновом режиме и получать обновления активности движения. Должен быть способ сделать это: я попробовал приложение Strava ... даже когда приложение находится в фоновом режиме, оно отключает GPS, когда пользователь останавливается. Когда пользователь возобновляет работу, он автоматически включает GPS (все это, пока приложение находится в фоновом режиме) ... это, вероятно, означает, что приложение работает в фоновом режиме и активно получает обновления активности движения, даже когда GPS выключен.
Спасибо заранее!
@Jackson. Вы нашли какое-либо решение или альтернативы? –
@AshokKumarS Не совсем, но я думаю, что ответ ниже объясняет это. Вам нужно сделать приложение бегите в фоновом режиме, используя другие средства, а затем просто используйте Core Motion, как обычно. – Jackson