Computer >> 컴퓨터 >  >> 프로그램 작성 >> IOS

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, Single View Application을 열고 이름을 LocationServices로 지정합니다.

2단계 − Main.storyboard를 열고 버튼을 하나 추가하고 이름을 getLocation으로 지정합니다.

iOS에서 런타임 시 위치 권한을 요청하는 방법

3단계 − ViewController.swift에서 버튼의 @IBAction 추가

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

4단계 − 위치 클래스를 사용하려면 Corelocation을 가져옵니다. CoreLocation 가져오기

5단계 − info.plist를 엽니다(앱이 실행되는 동안 위치 업데이트에 대한 권한을 활성화하려면 특수 키가 필요합니다). 마우스 오른쪽 버튼을 클릭하고 행 추가를 선택합니다. 다음 값을 입력하십시오.

iOS에서 런타임 시 위치 권한을 요청하는 방법

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에 반환합니다. 사용 중 승인은 앱이 포그라운드에 있는 동안 위치 업데이트를 받습니다. 위치 서비스가 비활성화되면 위치 서비스가 비활성화되었다는 경고 메시지가 사용자에게 표시됩니다.

애플리케이션을 실행해 보겠습니다.

iOS에서 런타임 시 위치 권한을 요청하는 방법