[swift] Swift 퍼미션(Permission) 설정 상태에 따라 UI를 업데이트하는 방법.

앱을 개발하다 보면 사용자의 동의가 필요한 권한을 요청해야하는 경우가 많습니다. Swift에서는 iOS 앱에서 퍼미션(Permission)을 설정할 수 있습니다. 그러나 퍼미션 설정 상태에 따라 앱의 UI를 업데이트해야하는 경우가 있을 수 있습니다. 이러한 상황을 처리하기 위해 몇 가지 방법을 살펴보겠습니다.

1. 퍼미션 요청하기

퍼미션을 요청하기 전에는 사용자의 동의 없이 해당 기능을 사용할 수 없습니다. 다음은 위치 권한을 요청하는 예시입니다.

import CoreLocation

let locationManager = CLLocationManager()

// 권한 요청
locationManager.requestWhenInUseAuthorization()

2. 퍼미션 상태 확인하기

퍼미션 상태를 확인하여 UI를 업데이트하는 방법을 살펴보겠습니다. 다음은 위치 권한 상태를 확인하여 UILabel의 텍스트를 업데이트하는 예시입니다.

import CoreLocation

let locationManager = CLLocationManager()
let statusLabel = UILabel()

// 퍼미션 상태 확인
let status = CLLocationManager.authorizationStatus()

switch status {
case .authorizedWhenInUse:
    statusLabel.text = "위치 권한이 허용되었습니다."
case .denied:
    statusLabel.text = "위치 권한이 거부되었습니다."
case .notDetermined:
    statusLabel.text = "위치 권한을 확인 중입니다."
default:
    statusLabel.text = "위치 권한 상태를 확인할 수 없습니다."
}

3. 퍼미션 변경 감지하기

퍼미션 상태가 변경되면 이를 감지하여 UI를 업데이트하는 방법도 있습니다. 이때 CLLocationManagerDelegate 프로토콜을 사용합니다. 다음은 위치 권한 상태 변경을 감지하여 UILabel의 텍스트를 업데이트하는 예시입니다.

import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {
    let locationManager = CLLocationManager()
    let statusLabel = UILabel()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        locationManager.delegate = self
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        locationManager.startUpdatingLocation()
    }

    // 퍼미션 변경 감지
    func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
        switch status {
        case .authorizedWhenInUse:
            statusLabel.text = "위치 권한이 허용되었습니다."
        case .denied:
            statusLabel.text = "위치 권한이 거부되었습니다."
        case .notDetermined:
            statusLabel.text = "위치 권한을 확인 중입니다."
        default:
            statusLabel.text = "위치 권한 상태를 확인할 수 없습니다."
        }
    }
}

이제 퍼미션 설정 상태에 따라 UI를 업데이트하는 방법을 알게 되었습니다. 여러분의 앱에서 필요한 퍼미션을 설정하고, 사용자의 동의가 필요한 경우 UI를 적절하게 업데이트하여 좋은 사용자 경험을 제공해보세요.

참고자료