[swift] Alamofire와 함께 사용하는 사용자 위치 추적하기

이번에는 Swift에서 Alamofire 라이브러리와 함께 사용자의 위치를 추적하는 방법에 대해 알아보겠습니다.

대기 화면에서 위치 권한 요청하기

사용자의 위치를 추적하기 위해서는 먼저 위치 권한을 요청해야 합니다. 대부분의 앱은 로딩 화면이나 대기 화면에서 위치 권한을 요청하는 것이 좋습니다.

import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate {

    static let shared = LocationManager()

    let locationManager = CLLocationManager()

    private override init() {
        super.init()
        locationManager.delegate = self
    }

    func requestLocationAuthorization() {
        locationManager.requestWhenInUseAuthorization()
    }

    // MARK: - CLLocationManagerDelegate

    func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
        if status == .authorizedWhenInUse {
            // 위치 권한이 허용된 경우 처리할 로직 작성
        } else {
            // 위치 권한이 거절된 경우 처리할 로직 작성
        }
    }

}

위의 코드는 LocationManager 싱글턴 클래스로 위치 권한을 요청하고 권한 상태를 처리하는 기본적인 로직을 포함하고 있습니다. requestLocationAuthorization 메서드를 호출하여 위치 권한을 요청할 수 있습니다.

Alamofire를 사용하여 위치 정보 요청하기

위치 권한을 획득한 후, Alamofire를 사용하여 위치 정보를 요청할 수 있습니다.

import Alamofire

func requestUserLocation() {
    guard let currentLocation = LocationManager.shared.locationManager.location else {
        // 현재 위치를 가져올 수 없는 경우 처리할 로직 작성
        return
    }
    
    let latitude = currentLocation.coordinate.latitude
    let longitude = currentLocation.coordinate.longitude

    let parameters: [String: Any] = [
        "lat": latitude,
        "lon": longitude
    ]

    AF.request("https://api.example.com/location", method: .get, parameters: parameters).responseJSON { response in
        switch response.result {
        case .success(let value):
            // 위치 정보를 성공적으로 가져온 경우 처리할 로직 작성
        case .failure(let error):
            // 위치 정보 요청이 실패한 경우 처리할 로직 작성
        }
    }
}

위의 코드에서는 현재 사용자의 위치를 가져와 parameters에 위도와 경도 정보를 담아 API 요청을 보내고, 응답을 처리하는 로직을 작성하였습니다. 응답이 성공적으로 오면 성공 처리를, 오류가 발생한 경우에는 오류 처리를 작성하면 됩니다.

결론

위와 같이 Alamofire와 CoreLocation을 함께 사용하여 사용자의 위치를 추적할 수 있습니다. 위치 권한 요청과 위치 정보 요청의 로직을 적절히 처리하여 앱에 맞게 위치 추적 기능을 구현해 보세요.