ResearchKit Fitness Step - таймер останавливается, когда приложение в фоновом режиме - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь включить некоторые действия ResearchKit в приложение и надеялся, что смогу использовать фитнес-задание «Активный», но время, кажется, останавливается, если iPhone выходит на экран блокировки.

Есть ли какие-нибудьКонфигурация, которая должна быть настроена для правильной работы этой задачи?

У меня включено приложение для фоновых задач, в том числе для определения местоположения, звука и т. Д., Но если я установил продолжительность фитнес-задания на 10 минут, таймер, по-видимому, остановится, когда откроется экран блокировки iPhone.

Я думаю, что приложение не дремлет из-за данных о местоположении, но, похоже, нет.

Я что-то здесь упускаю?

У меня есть другое приложение, которое использует GPS для получения данных о местоположении, и это приложение работает в фоновом режиме в течение многих часов (> 12 часов) и, кажется, никогда не завершает работу с iOS.

Iбудет проводить больше тестов, но кажется, что таймер «Фитнес-задачи» будет довольно тупым, если приложение будет отключено, что в принципе не подходит для этой цели, что удивительно, учитывая, что ResearchKit, похоже, был выпущен Apple.

РЕДАКТИРОВАТЬ:

После просмотра источника ResearchKit я обнаружил следующее:

  1. CLLocationManager не настроен для работы в фоновом режиме

    self.locationManager.allowsBackgroundLocationUpdates = YES;

  2. AVAudioSession не будет воспроизводить звук при заблокированном телефоне

    if (! [Сеанс setCategory: AVAudioSessionCategoryPlayAndRecordOtionSutionOutionOutionSutionOutionSutionSutionSutionOutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionSutionOU| AVAudioSessionCategoryOptionAllowBluetooth //[.duckOthers, .interruptSpokenAudioAndMixWithOthers, .allowBluetooth] error: & error]) {success = NO;ORK_Log_Warning (@ "Не удалось запустить аудиосеанс:% @", ошибка);}

...