iOS 12 более агрессивно относится к закрытию моего приложения? - PullRequest
0 голосов
/ 08 февраля 2019

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

Вот некоторые из задач, которые выполняются в фоновом режиме на таймерах:

-Парсинг массивов / словарей и выполнение вычислений

-Прием и отправка данных в firebase

-Запись данных в CoreData

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

Что-то изменилось в iOS 12 против 11?

Вот мой код для запуска обновлений местоположения:

        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.activityType = .other
        locationManager.allowsBackgroundLocationUpdates = true


        locationManager.pausesLocationUpdatesAutomatically = false
        locationManager.showsBackgroundLocationIndicator = true

        locationManager.startUpdatingLocation()

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

Любые другие идеи о хранении вещейжив во время записи?

edit: я также пытался проверить утечки памяти

edit2: добавлен снимок экрана info.plist

enter image description here

1 Ответ

0 голосов
/ 10 февраля 2019

Так что я не знаю почему, но после некоторого эксперимента и перемещения вещей я, кажется, исправил это.

У меня был CllocationManager в качестве синглтона и я переместил его в структуру, так как я делю ее междунесколько VC, чтобы не создавать его более одного раза.

Затем я переместил

    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.activityType = .other
    locationManager.allowsBackgroundLocationUpdates = true
    locationManager.pausesLocationUpdatesAutomatically = false
    locationManager.showsBackgroundLocationIndicator = true

из своей собственной функции в viewDidLoad (), которая все еще не работала, поэтому я переместил его вviewDidAppear () и теперь мое приложение работает без сбоев в течение 8 часов.Я не уверен, что способ, которым я делил диспетчер местоположений ранее, вызывал второе создание экземпляра и сброс настроек диспетчера местоположения к настройкам по умолчанию, что привело бы к тому, что locationManager.pausesLocationUpdatesAutomatics станет истинным (не уверен, просто догадываясь)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...