iOS 앱을 개발하다 위치 정보를 활용해야 할때 방법을 알아보자!
1. Info.plist의 권한 텍스트 작성하기!
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>위치정보 권한이 필요합니다. (항상 or 앱을 사용하는 동안 위치정보를 수신합니다.)</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>위치정보 권한이 필요합니다. (항상 위치정보를 수신합니다.)</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>위치정보 권한이 필요합니다. (앱을 사용하는 동안에만 위치정보를 수신합니다.)</string>
2. 위치 권한 팝업을 뜨우는 방법과 위치 정보 가져오기
- requestWhenInUseAuthorization : 앱을 사용하는 동안에만 위치 정보를 사용하겠다고 요청
- requestAlwaysAuthorization : 백그라운드 상태에서도 위치 정보를 사용하겠다고 요청
= 하지만 iOS 13 이후 앱에서 명시적으로 백그라운드 상태 권한 팝업을 요청할 수 없게 되었다.
이 부분은 아래 글에서 확인 하기
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
var locationManager:CLLocationManager!
var lat: Double?
var long: Double?
override func viewDidLoad() {
super.viewDidLoad()
locationManager = CLLocationManager()
locationManager.delegate = self
// 아래 함수 요청 시 위치 권한 팝업 출력
locationManager.requestWhenInUseAuthorization()
//배터리와 위치 정확도 센서 설정
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
//위도 경도
let space = locationManager.location?.coordinate
lat = space?.latitude
long = space?.longitude
}
}
Q. 위치 권한 팝업은 수시로 계속 호출 할 수 있나?
위치 권한 팝업의 경우 iPhone의 OS 레벨에서 호출되는 시스템 팝업으로 재 호출이 불가능하다.
하지만 앱내 팝업을 구성하여 확인 버튼 시 앱의 설정으로 이동 시켜 위치 권한을 수정하도록 구성은 가능하다
Q. 사용자가 위치 권한 팝업을 거부 한것을 확인 할 수 있나?
아래 코드를 통해 체크가 가능하다.
let gpsstatus = CLLocationManager.authorizationStatus()
if gpsstatus == CLAuthorizationStatus.denied || gpsstatus == CLAuthorizationStatus.restricted || gpsstatus == CLAuthorizationStatus.notDetermined {
print("위도 경도 가져오기 - 권한 거부함")
}
'개발' 카테고리의 다른 글
iOS Swift UITextField 입력시 특수문자 제외방법 (0) | 2021.04.07 |
---|---|
iOS 13 이후 위치 권한을 항상 받도록 설정하는 방법은? (0) | 2021.04.01 |
Android Java로 Kakao Login V2 이용해 보기 (0) | 2021.03.18 |
iOS 14.5 부터 변경될 IDFA 수집에 관한 정책 정리 (0) | 2021.03.16 |
Swift TextField 엔터키 이벤트 수신하는 방법! (0) | 2021.02.16 |