Фоновая работа приложения swift

Всем привет! Передо мной стоит такая задача: нужно сделать так, чтоб приложение в фоновом режиме запрашивало геоданные и в фоновом же режиме отправляла http запросы на сервер. Перерыл кучу топиков, понял, что iOS устроена так, что у тебя есть максимум 3 минуты на работу в фоне, а дальше все. Я вот понять не могу, неужели действительно есть такая жирная проблема при разработке приложений под iOS, или все-таки есть рабочие варианты работы???

пример моего кода, который работает 30 секунд в фоне

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var countLabelOutlet: UILabel!
    @IBOutlet weak var startButtonOutlet: UIButton!
    @IBOutlet weak var stopButtonOutlet: UIButton!

    var backgroundTask: UIBackgroundTaskIdentifier = .invalid

    var timer = Timer()

    override func viewDidLoad() {
        super.viewDidLoad()

    }
    @IBAction func stopButtonAction(_ sender: UIButton) {
        startTimer()
    }

    func beginBackgroundTask () {
      backgroundTask = UIApplication.shared.beginBackgroundTask(expirationHandler: { [weak self] in
        print("КОНЕЦ")
        self!.timer.invalidate()
        self?.endBackgroundTask() // It will call to cleanup
        self!.startTimer()
        print("Начало")
      })
        assert(backgroundTask != UIBackgroundTaskIdentifier.invalid)
    }

    func endBackgroundTask () {
      UIApplication.shared.endBackgroundTask(backgroundTask)
        backgroundTask = UIBackgroundTaskIdentifier.invalid
    }

    func startTimer(){
        self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.updateCounter), userInfo: nil, repeats: true)
        beginBackgroundTask()
    }

    @objc func updateCounter(){
        print(4)
        let text = self.countLabelOutlet.text
        var newNumber: Int = Int(text!) ?? 13
        print("Новое число \(newNumber)")
        newNumber += 1
        self.countLabelOutlet.text = String.init(describing: newNumber)
    }
}

Ответы (0 шт):