用户位置检索无效

时间:2016-03-31 05:36:09

标签: ios swift maps cllocationmanager info.plist

我试图在我的应用程序中获取用户位置,这是我在iOS 9上的教程之后构建的。我已经完成了相同的操作(据我所知)作为视频中的讲师以及视频它的工作原理,但对我来说它没有。首先,我构建了一个像这样的CLLocationManager:

var locationManager = CLLocationManager()

然后我确保在viewDidLoad()中添加以下代码行:

locationManager.delegate = self        
locationManager.desiredAccuracy = kCLLocationAccuracyBest        
locationManager.requestWhenInUseAuthorization()        
locationManager.startUpdatingLocation()

最后,我创建了一种接收更新位置的方法:

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    print(locations)
}

到目前为止,我的应用程序中会弹出一个窗口,询问用户是否允许使用该位置,但是当我按下Allow时,没有任何内容在控制台窗口中开始打印。我确保在Info.plist中设置NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription,但仍然没有工作,我还添加了CoreLocation.framework的东西。由于我对Swift很新,所以对此的任何帮助都将非常感谢!

2 个答案:

答案 0 :(得分:0)

确保已将CLLocationManagerDelegate添加到类声明中。

答案 1 :(得分:0)

只需在此代理中检查您的授权状态即可。如果获得授权,您可以更新您的位置。您的授权可能在首次启动时失败。因此,您应该从设置中提供位置访问权限,或删除应用程序,然后重新安装!!

func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {

    if status == .AuthorizedWhenInUse ||  status == .AuthorizedAlways {
        print("permissions granted")
    }else{
        print(status)
    } 
}