Xcode 8 iOS 模拟器没有在我的 Swift 3 项目中提示位置服务授权

Xcode 8 iOS Simulator is not prompting for location services authorization in my Swift 3 project

我关注了苹果开发者guide on location services

我已经包含了 info.plist 键值对:

键:Privacy - Location Always Usage Description

值:The application myTestApp needs access to location services even in the background

我创建了一个 CLLocationManager 的实例作为视图控制器的 class 变量:

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.

我需要在代码之外做些什么来重新创建授权应用程序然后看到它缩放到真实位置的用户体验吗?

The user permission prompt is one time only. Once it is allowed, device would fetch user location automatically from that point.

尝试通过这两种方法在模拟器中设置自定义位置。

1.使用模拟器菜单操作

2。使用 Xcode 调试器选项

模拟器处理位置的方式与设备略有不同。我建议将应用程序推送到设备本身,然后 运行ning 从那里查看它如何请求许可并确保它提供正确的位置。这很容易做到,并且对于使用访问定位服务的应用程序进行测试非常有帮助。

https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/LaunchingYourApponDevices/LaunchingYourApponDevices.html

基本上,插入 phone,select 从要模拟的设备列表中将其插入,按下播放并在 phone 到 运行 上接受您的开发人员访问权限您设备上的应用程序。