위치 권한을 요청하기 위해 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, Single View Application을 열고 이름을 LocationServices로 지정합니다.
2단계 − Main.storyboard를 열고 버튼을 하나 추가하고 이름을 getLocation으로 지정합니다.
3단계 − ViewController.swift에서 버튼의 @IBAction 추가
@IBAction func btnGetLocation(_ sender: Any) { }
4단계 − 위치 클래스를 사용하려면 Corelocation을 가져옵니다. 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에 반환합니다. 사용 중 승인은 앱이 포그라운드에 있는 동안 위치 업데이트를 받습니다. 위치 서비스가 비활성화되면 위치 서비스가 비활성화되었다는 경고 메시지가 사용자에게 표시됩니다.
애플리케이션을 실행해 보겠습니다.