Swift:尝试在不提示位置授权的情况下启动MapKit位置更新

时间:2015-07-09 13:53:21

标签: xcode swift mapkit

我正在使用XCode 7.0 Beta和Swift。

我正在使用MKMapView在地图上显示一些地方。一切都很好:我在地图上看到地图和地点,但我有以下错误消息:

  

尝试在不提示位置的情况下启动MapKit位置更新   授权。必须调用 - [CLLocationManager   requestWhenInUseAuthorization]或 - [CLLocationManager   requestAlwaysAuthorization] first。

在Info.plist文件中,我添加了NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription(见截图)

> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC
> "-//Apple//DTD PLIST 1.0//EN"
> "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist
> version="1.0"> <dict>     <key>NSLocationAlwaysUsageDescription</key>
>   <string>Test is NSLocationAlwaysUsageDescription</string>
>   <key>NSLocationWhenInUseUsageDescription</key>  <string>This is
> NSLocationWhenInUseUsageDescription</string>

在viewDidLoad中,我有以下代码

import UIKit
import MapKit
import CoreLocation

class ViewController: UIViewController {

    @IBOutlet weak var btn: UIButton!
    @IBOutlet weak var Map: MKMapView!

    @IBAction func btnClick(sender: AnyObject) {

    }

    override func viewDidLoad() {

        super.viewDidLoad()

        let locationManager = CLLocationManager()

        var CLAuthStatus = CLLocationManager.authorizationStatus()

        if(CLAuthStatus == CLAuthorizationStatus.NotDetermined) {
            locationManager.requestAlwaysAuthorization();
        }

当我运行代码时,在模拟器中,我没有任何警告或任何提示要求我授权。

怎么了?

提前致谢

度过愉快的一天

Ghislain的

2 个答案:

答案 0 :(得分:0)

我认为我有同样或类似的问题。我拥有所有正确的代码,但用户从未被要求授权,授权状态始终是。未确定。我怀疑用户请求已经显示但是在mapView后面,所以它无法被看到。如果您的问题与我的相同,您可以像这样解决:在设备上转到设置/隐私/位置服务。点击位置服务,然后向下滚动到您的应用程序的名称,然后点击它,看到名为&#34;允许位置服务&#34;永远和永远。在下面,您将看到放在.plist文件中的String。选择&#34;始终&#34; (如果那是你想要的)并尝试再次运行,看看是否能解决问题。

答案 1 :(得分:0)

enter image description here

我以前遇到过同样的问题。您是否在info.plist中添加了隐私权 - 位置使用说明