나의 발자취

[iOS] BookSearch 앱 좌우 넘기기 화살표 func 하나로 일치, CoreLocation 라이브러리 본문

앱 개발/iOS

[iOS] BookSearch 앱 좌우 넘기기 화살표 func 하나로 일치, CoreLocation 라이브러리

달모드 2024. 10. 28. 16:59

왼쪽 버튼도 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에서 아래의 항목들을 추가해주었는지 점검해준다.

 

다시 실행해보면 

 

아래와 같이 창이 나타나면서, 로그에 계속 걷기 속도로 위도/경도가 바뀌면서 출력되는 것이 확인된다.

Comments