Notice
Recent Posts
Recent Comments
Link
투케이2K
255. (ios/swift) CLLocationManager 사용해 위치 권한 요청 수행 실시 본문
[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT
[필수 : 사전 설정 사항 (info plist)]
[선택 : 사전 설정 사항 (Background Mode)]
[소스 코드]
import UIKit
import Foundation
import AVKit
import AVFoundation
// MARK: [import 선언 실시]
import CoreLocation
// MARK: [클래스 CLLocationManagerDelegate 추가]
class A_Intro: UIViewController, CLLocationManagerDelegate {
// MARK: - [전역 변수 선언 실시]
let ACTIVITY_NAME = "A_Intro"
// MARK: - [뷰 로드 실시]
override func viewDidLoad() {
super.viewDidLoad()
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> viewDidLoad() :: 뷰 로드 실시]")
print("====================================")
print("")
// [테스트 함수 실행 실시]
self.testMain()
}
// MARK: - [뷰 로드 완료]
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> viewWillAppear() :: 뷰 로드 완료]")
print("====================================")
print("")
}
// MARK: - [뷰 화면 표시]
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> viewDidAppear() :: 뷰 화면 표시]")
print("====================================")
print("")
}
// MARK: - [뷰 정지 상태]
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> viewWillDisappear() :: 뷰 정지 상태]")
print("====================================")
print("")
}
// MARK: - [뷰 종료 상태]
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> viewDidDisappear() :: 뷰 종료 상태]")
print("====================================")
print("")
}
// MARK: - [테스트 메인 함수 정의 실시]
var locationManager : CLLocationManager! // [위치 권한 사용 매니저]
func testMain() {
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> testMain() :: 테스트 함수 시작 실시]")
print("====================================")
print("")
/*
// -----------------------------
[요약 설명]
// -----------------------------
1. 필요 info plist 설정 :
- Privacy - Location Always Usage Description
- Privacy - Location Always and When In Use Usage Description
- Privacy - Location When In Use Usage Description
// -----------------------------
2. 필요 import 설정 :
- import CoreLocation
// -----------------------------
*/
// [비동기 처리 수행]
DispatchQueue.main.async {
self.locationManager = CLLocationManager.init() // locationManager 초기화
self.locationManager.delegate = self // 델리게이트 넣어줌
//self.locationManager.allowsBackgroundLocationUpdates = true // MARK: 백그라운드 위치 업데이트 허용 [프로젝트 >> Signing & Capabilities 메뉴 >> 백그라운드 모드 >> 위치 업데이트 설정 한 경우]
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest // 거리 정확도 설정
self.locationManager.requestAlwaysAuthorization() // 위치 권한 설정 값을 받아옵니다
self.locationManager.startUpdatingLocation() // 위치 업데이트 시작
}
}
// MARK: - [위치 서비스에 대한 권한 확인 실시]
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
if status == .authorizedAlways {
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> locationManager() :: 위치 사용 권한 항상 허용]")
print("====================================")
print("")
}
if status == .authorizedWhenInUse {
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> locationManager() :: 위치 사용 권한 앱 사용 시 허용]")
print("====================================")
print("")
}
if status == .denied {
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> locationManager() :: 위치 사용 권한 거부]")
print("====================================")
print("")
}
if status == .restricted || status == .notDetermined {
print("")
print("====================================")
print("[\(self.ACTIVITY_NAME) >> locationManager() :: 위치 사용 권한 대기 상태]")
print("====================================")
print("")
}
}
} // [클래스 종료]
[결과 출력]
반응형
'IOS' 카테고리의 다른 글
Comments