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


在 ios 中,我们可以使用 CLLocationManager 来通过 Swift 请求定位服务权限。

我们借助一个示例项目来完成此项操作。因此,创建一个新项目。首先,我们必须创建一个 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 官方文档,枚举具有以下值。

notDetermined, restricted, denied, authorized, authorizedWhenInUse。

我们看看另外一个示例。

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

更新于: 30-Jul-2019

217 次浏览

开启您的 职业生涯

通过完成课程获取认证

开始
广告