要求用户授予位置权限的警告框未显示

时间:2016-10-17 03:30:40

标签: ios swift

我刚开始使用iOS上的SWIFT编程。但是我在其他语言方面有很好的经验,比如JAVA,C#和PHP。也就是说,我遇到了一些问题。我正在创建一个简单的应用程序,它将根据用户的地理位置显示用户信息。我按照列出的here教程。

然而,由于很多事情在Swift 2.x和3.x之间发生了变化,我不得不修改他的代码。不太难,到目前为止我已经得到它编译。但是,应用程序从未要求我允许我使用设备的位置。

我已按照Apple列出的here指示放置" NSLocationAlwaysUsageDescription"在Info.plist中。但是我从未被提示过。下面列出了应显示此警报的相关代码段。

非常感谢任何帮助。感谢。

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    // 1. status is not determined
    if CLLocationManager.authorizationStatus() == .notDetermined {
        locationManager.requestAlwaysAuthorization()
    }
        // 2. authorization were denied
    else if CLLocationManager.authorizationStatus() == .denied {
        let controller = UIAlertController(title: "Error!", message: "Location services were previously denied. Please enable location services for this app in Settings.", preferredStyle: .alert)

        let alertAction = UIAlertAction(title: "Dismiss", style: .destructive) { (action) in
            print("Dismiss button tapped!")
        }

        controller.addAction(alertAction)

    }
        // 3. we do have authorization
    else if CLLocationManager.authorizationStatus() == .authorizedAlways {
        locationManager.startUpdatingLocation()
    }
}

1 个答案:

答案 0 :(得分:1)

您的代码运行正常,只需要提示您的警报:

self.present(controller, animated: true, completion: nil)

另请查看我的回答here如何将switch用于此类代码。