[swift] 위치 권한 설정

2024. 9. 2. 18:11·swift

swift로 앱을 만들다보면 사용자의 위치를 획득해야하는 경우가 생긴다.

 

CoreLocation 라이브러리로 열심히 코드를 작성하고 실행을 돌리는 순간..!!

...

(아무일도 일어나지 않았다)

당연하다. 우린 사용자에게 권한을 요청한 적이 없기 때문이다.

그럼 위치 권한은 어떻게 요청하냐??

 

info.plist

현재 위치 사용에 대한 동의에 관련한 내용을 작성한다.

Privacy - Location Always Usage Description (위치를 항상 허용)

Privacy - Location When In Use Usage Description (위치를 사용할 때만 허용)

Privacy - Location Always and When In Use Usage Description (위치를 사용할 때와 항상 허용)

 

CoreLocation

위치 관리자를 초기화 및 생성해주어야한다.

import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate {
	private var locationManager = CLLocationManager()
    
    private override init() {
        super.init()
        locationManager.delegate = self
        // locationManager.desiredAccuracy = kCLLocationAccuracyBest
        // 위에 주석된 코드는 위치정확도를 정확하게 바꾸는 코드이다. 난 위치가 그렇게 정확하지 않아도 되어서 주석처리 했다.
    }
}

 

권한 요청하기

위치 관리자를 생성했으면 권한 요청은 누워서 떡먹기다.

locationManager.requestWhenInUseAuthorization()

 

해당 코드를 사용하면 된다.

난 사용자가 위치권한을 거부했을 때를 생각하여 아래처럼 작성하였다.

func checkUserDeviceLocationServiceAuthorization() async {
    let authorizationStatus = locationManager.authorizationStatus

    if authorizationStatus == .authorizedAlways {
    }
    else if authorizationStatus == .authorizedWhenInUse {
    }
    else if authorizationStatus == .denied {
        DispatchQueue.main.async {
            UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)
        }
    }
    else if authorizationStatus == .restricted || authorizationStatus == .notDetermined {
        locationManager.requestWhenInUseAuthorization()
    }
}

 

위치 정보 업데이트

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    print(locations[0].coordinate.latitude)
    print(locations[0].coordinate.longitude)
    stopUpdateLocation()
}

 

위치 정보가 업데이트 되면 해당하는 위도와 경도를 출력하고 업데이트를 멈춘다.

지도나 네비게이션에서는 항상 업데이트로 두면 될 것이다.

 

'swift' 카테고리의 다른 글
  • [swift] Tuist 겉핥기
  • [swift] RxSwift란?
  • [swift] ARC
  • [swift] URLSession
GwanSon
GwanSon
버그는 도전, 코드는 해결. 열정있는 개발을 하자.
  • GwanSon
    관슨의 개발일지
    GwanSon
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • iOS (3)
      • swift (15)
      • UIKit (0)
      • swiftUI (2)
      • 알고리즘 (8)
      • CS (8)
      • 면접 (11)
      • Flutter (4)
      • 회고 (2)
      • 잡담 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    2025 토스 Next
    부스트캠프
    Swift
    부스트캠프 10기
    tuist
    백준
    챌린지
    후기
    boj
    네이버 부스트캠프
    네이버 부스트캠프 후기
    ios
    모듈화
    토스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
GwanSon
[swift] 위치 권한 설정
상단으로

티스토리툴바