如何以编程方式请求权限以在iPhone / iOS中使用位置服务?

要在ios中快速请求位置服务权限,我们可以使用CLLocationManager。

我们将在一个示例项目的帮助下完成此操作。因此,创建一个新项目。首先,我们需要在您的视图控制器中创建一个locationManager对象。

var locationManager = CLLocationManager()

现在,我们首先需要检查设备上是否启用了定位服务。要检查这一点,我们将使用

CLLocationManager.locationServicesEnabled()函数,该函数返回一个布尔值,该值显示设备上的位置服务是否处于活动状态。

if CLLocationManager.locationServicesEnabled() {
   print("permissions allowed")
} else {
   locationManager.requestAlwaysAuthorization()
   locationManager.requestWhenInUseAuthorization()
}

在上面的示例中,如果启用了位置服务,则我们将打印“ permissions allowed”,否则,我们将请求两种授权,alwaysInUse和WhenInUse授权。

现在,让我们看另一个示例,在该示例中,如果定位服务在设备上处于活动状态,则将查看授予哪种权限。

我们将使用CLLocationManager.authorizationStatus()方法,该方法返回给定的授权类型。它是一个具有5个可能值的枚举。

根据Apple的官方文档,该枚举具有以下值。

未确定,限制,拒绝,授权,使用时授权。

让我们看另一个例子。

if CLLocationManager.locationServicesEnabled() {
   switch CLLocationManager.authorizationStatus() {
      case .authorizedAlways,.authorizedWhenInUse : print("authorized.")
      case .denied,.restricted,.notDetermined : print("非授权。")
   }
}