Мы получили отчет, в котором некоторые пользователи застряли на определенном экране нашего приложения и не могут перейти на панель управления приложением.
После проверки рассматриваемого экрана это экран загрузки, который будет отображаться после успешного входа пользователя. Единственный код, который может вызвать застревание пользователя, - это CLLocationManager. Экран будет ждать, пока CLLocationManager вызовет didUpdateLocations или didFailWithError, а затем перейдет на панель мониторинга приложения.
Полагаю, CLLocationManage не вызывал ни одного из своих делегатов. Таким образом, пользователь застрял на экране «загрузки».
Как долго CLLocationManager.requestLocation вызывает свои функции делегата? Если запрос занимает слишком много времени, CCLocationManager вызывает didFailWithError?
Ниже сокращенная версия наших кодов:
override func viewDidLoad() {
super.viewDidLoad()
locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
// process the location then forward to dashboard screen
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
// forward to dashboard screen
}
Любая информация очень ценится! ТИА!