0
내 iPhone 앱에서 사용자 위치를 얻으려고합니다. info.plist에 필요한 권한 (앱이 오프라인이 아니어도 위치 사용)을 지정했습니다. 그러나 여전히 나는 현재 위치조차 얻지 못한다는 것을 적어도 한 번 의미하는 내 대리인이 시작된다는 것을 보지 못한다. 코드는 다음과 같습니다.사용자 위치 및 업데이트 받기
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
var locationManager = CLLocationManager();
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
locationManager.delegate = self
if (CLLocationManager.authorizationStatus() == CLAuthorizationStatus.notDetermined) {
self.locationManager.requestAlwaysAuthorization();
}
locationManager.distanceFilter = kCLDistanceFilterNone
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let userLocation:CLLocation = locations[0]
let long = userLocation.coordinate.longitude;
let lat = userLocation.coordinate.latitude;
print(lat)
}
func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!)
{
locationManager.stopUpdatingLocation()
if ((error) != nil)
{
print(error)
}
}
누군가가 내게 가능한 문제점을 지적 할 수 있습니까?
위치 승인 여부는 묻지 않으십니까? – iMHitesh
네, 허락을 한 번 요청했습니다. 다음 프로그램을 실행할 때마다 설정에 저장되어 있으므로이 권한 요청을받지 못합니다. 위치 업데이트에서 트리거되어야하는 델리게이트가 실제로 호출되지 않는다는 것입니다. 예를 들어 멀티 스레딩 문제 일 수 있습니다. 주 스레드에서 호출하고 그 인스턴스가 존재하지 않는 다른 스레드에서 ... 지금 확인 ... – seeker
[가능한 빨리 위치 사용자 whith CLLocationManager를 얻는 방법?] (http://stackoverflow.com/questions/24252645/)의 가능한 복제본 how-to-get-location-user-whith-cllocationmanager-in-swift) – xoudini