[英]swift ios9: Trying to start MapKit location updates without prompting for location authorization
[英]Xcode 8 iOS Simulator is not prompting for location services authorization in my Swift 3 project
我包括了info.plist
键值对:
密钥: Privacy - Location Always Usage Description
价值: The application myTestApp needs access to location services even in the background
我已经创建了CLLocationManager
的实例作为视图控制器的类变量:
var locationManager = CLLocationManager()
我在视图控制器viewDidLoad()
函数中有代码,用于分配委托并检查当前状态:
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer
let status = CLLocationManager.authorizationStatus()
switch status {
case .denied, .restricted, .notDetermined, .authorizedWhenInUse :
print("The switch detected a state other than always")
locationManager.requestAlwaysAuthorization()
default:
print("Services Authorized")
}
但是,当我进行较小的更改后构建并运行该应用程序时,它并不会提示用户访问权限,更糟糕的是,当它有时能正常工作时,它会认为该用户位于大西洋中部的纬度:0.0和经度:0.0 。
我需要执行代码之外的任何事情,以便重新创建授权应用程序的用户体验,然后将其缩放到实际位置?
模拟器处理位置与设备有所不同。 我建议将应用程序推到设备本身并从那里运行,以查看其如何请求许可并确保其位置正确。 这非常容易实现,对于使用访问位置服务的应用进行测试非常有帮助。
本质上,插入手机,从要模拟的设备列表中选择手机,按一下播放,并接受手机上的开发人员访问权限,以从设备上运行应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.