사용하는 위치 서비스에 대한 권한을 요청하려면 :
yourSharedLocationManager.requestWhenInUseAuthorization()
상태가 현재 미확인 인 경우 사용자에게 액세스를 허용하라는 경고가 표시됩니다. 액세스가 거부되면 CLLocationManagerDelegate에서 앱에 알림이 전송됩니다. 마찬가지로 권한이 언제든지 거부되면 여기에서 업데이트됩니다.
현재 권한을 확인하기 위해 확인해야하는 두 가지 상태가 있습니다.
- 사용자가 일반 위치 서비스를 활성화했는지 여부
CLLocationManager.locationServicesEnabled()
- 사용자가 앱에 대한 올바른 권한을 부여한 경우 ..
CLLocationManager.authorizationStatus() == .authorizedWhenInUse
확장 기능을 추가하는 것은 편리한 옵션입니다.
extension CLLocationManager {
static func authorizedToRequestLocation() -> Bool {
return CLLocationManager.locationServicesEnabled() &&
(CLLocationManager.authorizationStatus() == .authorizedAlways || CLLocationManager.authorizationStatus() == .authorizedWhenInUse)
}
}
여기에서는 사용자가 처음으로 길 찾기를 요청했을 때 액세스됩니다.
private func requestUserLocation() {
locationManager.requestWhenInUseAuthorization()
if CLLocationManager.authorizedToRequestLocation() {
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.requestLocation()
} else {
showAlertNoLocation(locationError: .invalidPermissions)
}
}
다음은 대리인입니다.
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
if !CLLocationManager.authorizedToRequestLocation() {
showAlertNoLocation(locationError: .invalidPermissions)
}
}
manager.locationServicesEnabled()
것입니다CLLocationManager.loationServicesEnabled()
.