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