如何在 iOS 上运行时请求位置权限


要请求位置权限,我们将使用 Apple 的 CLLocationManager 类。您可以使用此类的实例来配置、启动和停止核心位置服务。

您可以在此处阅读有关 CLLocationManager 类的更多信息。

 https://developer.apple.com/documentation/corelocation/cllocationmanager

iOS 应用可以支持两种级别的位置访问。

  • 使用应用期间 - 应用可以在应用使用时访问设备的位置。这也被称为“使用时授权”。

  • 始终 - 应用可以在应用使用时或后台访问设备的位置。

这里我们将使用使用时授权:仅在您的应用运行时请求使用位置服务的授权。

 https://developer.apple.com/documentation/corelocation/choosing_the_authorization_level_for_location_services/requesting_when-in-use_authorization

步骤 1 - 打开 Xcode,选择“单视图应用程序”,将其命名为 LocationServices。

步骤 2 - 打开 Main.storyboard 并添加一个按钮,将其命名为 getLocation。

步骤 3 - 在 ViewController.swift 中添加按钮的 @IBAction。

@IBAction func btnGetLocation(_ sender: Any) {
}

步骤 4 - 导入 Corelocation 以使用位置类。 import CoreLocation

步骤 5 - 打开您的 info.plist(要在应用运行时启用位置更新权限,需要一个特殊的键)。右键单击并选择“添加行”。输入以下值。

步骤 6 打开 ViewController.swift 并创建 CLLocationManager 的对象,

let locationManager = CLLocationManager()

步骤 7 - 在 ViewController.swift 中,在按钮操作中添加以下代码,

@IBAction func btnGetLocation(_ sender: Any) {
   let locStatus = CLLocationManager.authorizationStatus()
   switch locStatus {
      case .notDetermined:
         locationManager.requestWhenInUseAuthorization()
      return
      case .denied, .restricted:
         let alert = UIAlertController(title: "Location Services are disabled", message: "Please enable Location Services in your Settings", preferredStyle: .alert)
         let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
         alert.addAction(okAction)
         present(alert, animated: true, completion: nil)
      return
      case .authorizedAlways, .authorizedWhenInUse:
      break
   }
}

authorizationStatus 将当前授权状态返回到 locStatus。使用时授权在应用处于前台时获取位置更新。当位置服务被禁用时,用户将看到一条带有“位置服务已禁用”消息的警报。

让我们运行应用程序,

更新于: 2019-07-30

1K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告