Я хочу получить местоположение внутри пользовательского делегата в swift. Обратите внимание, что это отлично работало 2 часа назад. Основная проблема заключается в том, что оповещение авторизации местоположения исчезает самостоятельно, прежде чем я смогу разрешить это. Поэтому я попытался войти в настройки и разрешить, но это не сработает. Почему alertView исчезает сам, и почему, хотя я разрешил его с помощью настроек, я до сих пор не могу получить обновление? Я добавил правильный ключ в plist, а также добавил в файл делегат и структуру CoreLocation. Также обратите внимание, что didFail не вызывается в любой момент. Любые рекомендации будут оцененыМенеджер местоположения не обновляет местоположение в быстром режиме. AlertView исчезает
func getLocation(){
println("called")
let locationManager:CLLocationManager = CLLocationManager()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
let status = CLLocationManager.authorizationStatus()
println(status.rawValue)
if(status != CLAuthorizationStatus.Authorized) {
locationManager.requestWhenInUseAuthorization()
println("called2")
}else{
locationManager.startUpdatingLocation()
println("allowed and updating")
}
}
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
println("updating")
var locationArray = locations as NSArray
var locationObj = locationArray.lastObject as CLLocation
println(locationObj)
}
func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
println(error)
}
func locationManager(manager: CLLocationManager!,
didChangeAuthorizationStatus status: CLAuthorizationStatus) {
var shouldIAllow = false
println(status)
switch status {
case CLAuthorizationStatus.Restricted:
println("Restricted Access to location")
case CLAuthorizationStatus.Denied:
println("User denied access to location")
case CLAuthorizationStatus.NotDetermined:
println("Status not determined")
default:
println("Allowed to location Access")
shouldIAllow = true
}
if (shouldIAllow == true) {
manager.startUpdatingLocation()
} else {
println("Denied access: \(status)")
}
}
Ну, я получил его для работы в соответствии с вашими инструкциями, но также удалив его из моего пользовательского делегата, который поднимает мой вопрос: Does locationManager updateLocations должен быть в основном потоке? Я имею в виду, что он работал отлично, как 3 часа назад через пользовательский делегат. – snksnk
@snksnk Я не уверен, что вы подразумеваете под «отстранением от моего пользовательского делегата». И что вы подразумеваете под заказным делегатом? И отвечая на ваш вопрос: updateingLocations запускается в основном потоке, поэтому он находится в основном потоке. –
Я создал делегат, который вызывается через mainViewController, и через этого делегата я хочу обновить Местоположение – snksnk