Обновления местоположения перестают доставляться приложению в фоновом режиме примерно через 20 минут. Приложение не закрывается, потому что когда я нажимаю на значок приложения, оно возвращается из фона в состояние, которое я оставляю, а затем обновления начинают поступать снова. Я также вижу, что в правом верхнем углу панели задач есть маленькая стрелка, когда она отображается, я получил обновления, когда он исчезает, я не получаю обновления. Я получаю данные GPS каждые 5 секунд, сохраняю их в какой-то очереди и каждую минуту я подключаюсь к своему серверу через сокет tcp и отправляю эти обновления. Когда исчезает верхняя правая стрелка, мое приложение больше не подключается к серверу (и должно работать даже с пустыми данными), поэтому я предполагаю, что приложение находится в режиме ожидания.
Я написал приложение в Qt / QML, а затем преобразовал проект в XCode. Я проверил «Фоновые режимы» (Обновления местоположения, Фоновая выборка) в разделе «Возможности». У меня в plist файле UIBackgroundModes выборка, местоположение. У меня также есть NSLocationWhenInUse NSLocationAlways и NSLocationAlwaysAndWhenInUse UsageDescription And App в системе проверки имеет
настройки-> myapp-> Адрес-> Всегда
Возможно, проблема в том, что приложение приостановлено или переведено в режим сна. В другом проекте я использовал некоторый код для предотвращения выцветания экрана с помощью простого кода:
void IosLockHelper::setTimerDisabled() {
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
}
Это тот случай? Но я не хочу, чтобы экран был включен все время.
Он должен продолжать посылать местоположение gps на мой сервер через некоторые интервалы, это может быть 1,5 минуты.
Я тестирую на iOS 12.3.1 и на Qt 5.12.3
Спасибо заранее
Marek