Реализация смены статуса авторизации locationManager


#1

Привет,помогите с реализацией

По нажатию на кнопку начинаю трекать геолокацию .startUpdatingLocation()
Функция по нажатию кнопки:

func handleLocationAuthorizationStatus(){

    switch locationManager.authorizationStatus {
    case .authorizedWhenInUse,.authorizedAlways:
        startStopTracking()
        break
    case .denied:
    // presentAlertController
        break
    case .notDetermined:
        locationManager.requestWhenInUseAuthorization()
        break
    case .restricted:
        break
    @unknown default:
        print("New case is available")
    }
}

В случае если статус авторизации .notDetermined,хочу,чтобы после разрешения(Allow while using app) на запрос .requestWhenInUseAuthorization() начинала трекаться локация

Можно сделать через метод делегата locationManagerDidChangeAuthorization()

    if manager.authorizationStatus == .authorizedWhenInUse{
        startStopTracking()
    }

Но в таком случае,если я просто в настройсках сменил статус с Never,Ask Next Time на When Using the App - так же срабатывает метод делегата и начинает трекаться локация без нажатия на кнопку,чего я бы хотел избежать

Вопрос - как красиво реализовать нужное поведение?
Мои догадка только доп условие в методе делегата и то пока не знаю какое