Swift Presentr는 iOS 애플리케이션에서 사용하기 쉬운 커스텀 모달 프레젠테이션 라이브러리입니다. 이 라이브러리를 사용하여 실시간 위치 추적 기능을 구현하는 방법을 알아보겠습니다.
1. Presentr 라이브러리 추가하기
첫째로, Presentr 라이브러리를 프로젝트에 추가해야 합니다. Presentr의 최신 버전을 Cocoapods를 통해 설치할 수 있습니다. Podfile
에 다음 줄을 추가하고, 터미널에서 pod install
커맨드를 실행하세요.
pod 'Presentr'
2. Location Manager 설정하기
실시간 위치 추적을 위해 Core Location 프레임워크를 사용해야 합니다. 먼저 위치 관리자를 초기화하고 권한을 요청해야 합니다. ViewController
클래스의 viewDidLoad
메서드에서 다음 코드를 추가합니다.
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
}
}
3. Presentr로 모달 뷰 컨트롤러 표시하기
모달로 표시할 뷰 컨트롤러에는 위치 정보를 실시간으로 보여주는 UI가 포함되어야 합니다. 이 예시에서는 MapViewController
를 사용합니다. ViewController
에서 버튼을 누를 때마다 모달로 MapViewController
를 표시하는 코드를 추가합니다.
import Presentr
class ViewController: UIViewController {
let presenter: Presentr = {
let presenter = Presentr(presentationType: .popup)
presenter.transitionType = .crossDissolve
presenter.dismissTransitionType = .crossDissolve
presenter.backgroundOpacity = 0.5
presenter.dismissOnSwipe = true
return presenter
}()
@IBAction func showMapButtonTapped(_ sender: UIButton) {
let mapVC = MapViewController()
customPresentViewController(presenter, viewController: mapVC, animated: true, completion: nil)
}
}
4. MapViewController에서 위치 정보 사용하기
MapViewController
에서 Core Location을 사용하여 실시간 위치 정보를 받아와 지도에 표시할 수 있습니다. MapViewController
를 다음과 같이 구현합니다.
import CoreLocation
import MapKit
class MapViewController: UIViewController, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
mapView.showsUserLocation = true
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let location = locations.last else { return }
let region = MKCoordinateRegion(center: location.coordinate, latitudinalMeters: 1000, longitudinalMeters: 1000)
mapView.setRegion(region, animated: true)
// 위치 정보를 사용하여 지도에 핀 등을 추가하는 코드를 작성합니다.
// ...
}
}
위 코드에서는 위치 업데이트마다 didUpdateLocations
메서드가 호출되므로, 이 메서드 내에서 위치 기반 작업을 수행할 수 있습니다.
5. 사용자 권한 확인하기
위치 관리자를 사용하기 위해서는 사용자의 권한 동의를 받아야 합니다. iOS에서 위치 권한을 요청하는 방법에 따라 애플리케이션의 Info.plist
파일에 다음 키-값을 추가해주세요.
NSLocationWhenInUseUsageDescription
: “앱을 사용하는 동안 위치 정보에 접근하여 실시간 위치 추적을 사용합니다.”
위치 권한이 필요한 시점에서 iOS는 해당 메시지를 사용자에게 표시합니다.
이제 Presentr와 함께 실시간 위치 추적 기능을 구현하는 방법을 알게 되었습니다. 이를 응용하여 개발하고자 하는 앱에 맞게 위치 정보를 활용해보세요!
참고 자료:
- Presentr 라이브러리 링크: https://github.com/IcaliaLabs/Presentr
- Core Location 프레임워크 링크: https://developer.apple.com/documentation/corelocation