나의 발자취
[iOS] BookSearch 앱 좌우 넘기기 화살표 func 하나로 일치, CoreLocation 라이브러리 본문
왼쪽 버튼도 actNext() 기능에 연동시키고, 왼쪽 버튼은 tag값을 -1, 오른쪽은 +1로 주고 page += sender.tag로 주면 똑같이 동작을 한다!
CoreLocation 라이브러리를 사용할것이다.
아래와 같이 선언해준다.
클래스로 선언하면 힙영역에 있게 된다.
이렇게 선언을 하게 되면 viewDidLoad가 될 때 매번 옵셔널값으로 불러오게 된다.
config 설정을 할 게 있을 때는 이와 같이 설정해주는 것이 좋다.
아래와 같이 코드 완성을 해준다.
import UIKit
import CoreLocation
class ViewController: UIViewController {
let manager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.allowsBackgroundLocationUpdates = true
manager.delegate = self
manager.requestWhenInUseAuthorization()
manager.requestAlwaysAuthorization()
manager.startUpdatingLocation()
}
}
이 때, 에러가 나타난다.
이걸 고치기 위해 ViewController의 프로토콜에 CLLocationManagerDelegate를 추가해준다.
class ViewController: UIViewController, CLLocationManagerDelegate {
let manager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
manager.desiredAccuracy = kCLLocationAccuracyBest
// manager.allowsBackgroundLocationUpdates = true
manager.delegate = self
manager.requestWhenInUseAuthorization()
manager.requestAlwaysAuthorization()
manager.startUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let location = locations.first else { return }
print("didUpdate location: \(location.coordinate.latitude), \(location.coordinate.longitude)")
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: any Error) {
print("error \(error.localizedDescription)")
}
}
일단 테스트를 위해 위에까지 코드를 입력해주고, 실행을 해준다. 참고로, 시뮬에서 Features > Location을 들어가면 아래와 같은 여러 모드가 있다.
City Run: 걸음걸이 속도
City Bicycle Ride: 자전거 속도
Freeway Drive: 자동차 속도
Apple: 본사
확인을 위해 모드를 City Run으로 바꿔준다.
<참고>
실행 했을 때, 아래와 같이 error The operation couldn’t be completed. (kCLErrorDomain error 1.) 라고 뜨면
info.plist에서 아래의 항목들을 추가해주었는지 점검해준다.
다시 실행해보면
아래와 같이 창이 나타나면서, 로그에 계속 걷기 속도로 위도/경도가 바뀌면서 출력되는 것이 확인된다.
'앱 개발 > iOS' 카테고리의 다른 글
[iOS] SwiftUI vs UIKit, SwiftUI 특징 (2) | 2024.10.29 |
---|---|
[iOS] 스토리보드 MapKit 적용해보기 (2) | 2024.10.29 |
[iOS] SPM(Swift Package Manager), 오픈소스 라이브러리 사용 (1) | 2024.10.28 |
[iOS] Codable - 인코딩 / 디코딩, KakaoAPI를 활용한 BookSearch 앱 만들기 응용 (5) | 2024.10.22 |
[iOS] 테이블뷰컨트롤러에서 데이터 추가/삭제하기 (3) | 2024.10.22 |