본문 바로가기
UIKit Project/UIKit Troubleshooting

[날씨앱] 정확한 날씨 데이터를 찾아서... (Apple WeatherKit)

by thekoon 2023. 6. 15.

예전부터 아이폰을 오래 써왔지만

마음에 드는 날씨앱이 없어서 

나중에 앱개발을 하게 되면 만들어봐야지~하고 생각하고 있다가

UIKit 개일 프로젝트를 날씨 앱으로 만들어보게 되었습니다!

 

UIKit에 mvvm아키텍처,

SnapKit과 Then을 사용해서 코드베이스로 UI를 만들어보고,

RxSwift를 활용해 비동기 처리를 하려고 합니다!

 

여러 고민이 있었지만

날씨앱에서 가장 중요한! 날씨 API를 뭐를 사용할까 하다가

1. 기상청

2. WeatherKit

이렇게 두 개로 좁혔습니다.

 

WeatherKit은 

개발자 계정이 있어야 사용가능한데, 저는 이미 부트캠핑을 배포하면서 개발자 계정에 가입된 상태라 사용활 수 있었습니다!

 

(공식 홈페이지)

https://developer.apple.com/kr/weatherkit/

 

WeatherKit - Apple Developer

WeatherKit은 사용자가 최신 정보를 확인하고 안전하게 미리 대비하는 데 도움이 되는 여러 가지 유용한 기상 데이터를 앱과 서비스에 제공합니다.

developer.apple.com

(기본 멤버십은 월 50만회까지 호출이 가능해서 충분하다고 생각했습니다!)

 

 

(wwdc 소개 영상)

https://developer.apple.com/videos/play/wwdc2022/10003/

 

Meet WeatherKit - WWDC22 - Videos - Apple Developer

WeatherKit offers valuable weather data for your apps and services to help people stay up to date on the latest conditions. Learn how to...

developer.apple.com

 

우선 디벨로퍼 페이지와 wwdc영상을 봤는데

애플의 머신러닝에 엄청난 기술들로 전 세계 날씨를 정확하게 알려준다고 합니다!

그래서 설레는 마음을 가지고

Apple Developer에 들어가

WeatherKit Key를 등록해주고, Xcode의 프로젝트에도 등록합니다!

 

import WeatherKit,

날씨를 호출할때 사용자의 위치를 사용하므로 import CoreLocation을 하고

두개의 메니저를 만들었습니다.

 

사용하려는 HomeController에

extension으로 위치를 가져오는 함수를 만들고

 

위치를 사용할때 유저에게 접근 동의 알림을 띄우기 위해

info에 추가해줍니다.

 

그리고 HomeController에서 함수를 호출하고,

데이터 확인을 위해서 ViewDidLoad()할때 print()하도록 설정했습니다! 

그렇게 하면 쨘~

앱을 켰을때 위치 데이터 동의도 물어보고 (프로토타입이라 디자인은 부끄러우니 보지 말아주세요..),

 

이렇게 현재날씨, 주간날씨, 현재 상세 날씨 등 

api에 맞춰 호출하기만 하면 WeatherKit이 현재 사용자 위치를 바탕으로

날씨를 보내줍니다!

그런데...한 가지 문제가 있었으니...

지금 여름인데...왜 13도..?

확인해보니 CoreLocation에 찍힌 좌표와 제가 있는 좌표는 거의 맞는데

날씨 데이터가 정확하진 않은 것 같습니다ㅠㅠ

머신러닝을 어떻게 해서 전 세계 날씨가 정확하다며ㅠㅠ

아니면 제가 어딘가에서 잘못 호출을 한건지

조금 더 알아봐야겠습니다!

 

역시 한국 날씨는 기상청인가..

기상청 API도 호출해보고, WeatherKit과 비교해서

더 정확한 데이터를 사용해야 될 것 같습니다!

혹시 제가 잘 못 한 부분이 있으면 댓글에 알려주시면 감사하겠습니다!