WeatherKit 살펴보기

Daehee Kim·2022년 6월 11일
21

WWDC

목록 보기
1/1
post-thumbnail

WWDC에서 감명받은 것들로 한번 포스팅해 보려고 합니다. 저의 부족한 영어 실력으로 틀린 내용이 있을 수 있으니 잘못된 부분이 있다면 댓글로 훈수 부탁드립니다 ㅎㅎ

WeatherKit 소개

WeatherKit는 Apple이 WWDC2022에서 공개한 AP입니다. Apple이 말하길 정확한 기상 예측에 접근하는 것이 그 어느 때보다도 중요하다고 생각해서 WeatherKit을 만들었다 합니다. 이번 WeatherKit의 특별한 점이라면 REST API를 지원해서 애플 기기가 아닌 다른 디바이스에서도 사용이 가능하다는 점이 있습니다.

왜 써야 하는가

애플이 자신감 있게 한 말입니다.

WeatherKit is powered by the all-new Apple Weather Service, a world-class global weather forecast.

완전히 새로워진 날씨 서비스를 만들었다고 하네요...(과연)
고해상도 기상 모델과 머신 러닝 및 예측 알고리즘을 사용하여 전 세계적인 날씨를 예측한다고 합니다.

그리고 애플이 잘하는거! 데이터를 비공개로 유지한다고 합니다.
hyperlocal forecasts(초극소 예보? 뭔소린교?) 만 제공하도록 설계되었다고 합니다. 극소수의 데이터만 사용한다는 의미 같네요. 사용자의 정보를 쉽게 보호할 수 있다고 합니다.

그리고 쓰기 쉽고 편하다고 하네요 (가장 중요한 이유입니다 😊)

어떤 데이터를 넘겨주는가

weather data set에서는 많은 값들을 넘겨주고 있습니다. 많이 사용할 거 같은 거 몇 개만 알아보겠습니다.

어...... 너무 많네요......... 우리가 생각하는 기상 데이터들은 다 있다고 보시면 됩니다. 궁금하신 분들은 여기에서 확인하세요😀

어떻게 쓰는 건가

swift에서 쓰는 것은 매우 간단하다고 합니다.

import WeatherKit
import CoreLocation


let weatherService = WeatherService()

let syracuse = CLLocation(latitude: 43, longitude: -76)

let weather = try! await weatherService.weather(for: syracuse)

let temperature = weather.currentWeather.temperature

let uvIndex = weather.currentWeather.uvIndex

먼저 weatherService object를 만들어 줍니다. 그리고 entry point 겍체를 만들어 줍니다. 원하는 위치를 넣어주고(저 위치는 발표자분의 고향이래요. TMI), weatherService 인스턴스에서 weather(for:)를 호출하고 위에서 만든 위치를 전달합니다. 호출이 완료되면 날씨 데이터들을 가져올 수 있게 됩니다.

다음은 REST API를 사용하는 방법입니다.

/* Request a token */
const tokenResponse = await fetch('https://example.com/token');
const token = await tokenResponse.text();

/* Get my weather object */
const url = "https://weatherkit.apple.com/1/weather/en-US/41.029/-74.642?dataSets=weatherAlerts&country=US"

const weatherResponse = await fetch(url, {
headers: {
"Authorization": token
}
});
const weather = await weatherResponse.json();

/* Check for active weather alerts */
const alerts = weather.weatherAlerts;
const detailsUrl = weather.weatherAlerts.detailsUrl;

음... 프론트 코드라 모르겠다만 URL에 토큰을 넣으면 Json 형태로 Reaponse가 온다고 합니다.

토큰이 있네;;

네 토큰이 필요합니다. 무려 Apple 개발자 계정이 있어야 합니다.
네. 그 1년에 12만원짜리 계정이요... 심지어 사용량이 많으면 추가금을 내야 합니다. 물론 개발자 계정이 있으면 한 달간 50만 번의 Call을 받을 수 있다고 합니다. 근데 이제 한달에 500만 건의 Call이 있다면... 월 999$가 소모됩니다. ㅎㅎ 좀 비싼 감이 있네요... (아닌가? 서버 구축이 훨신 많이 드나?) 암튼 개발자 계정에서 토큰을 발급받아서 사용하면 된다고 나와 있네요.

그래서.. 쓰라고요 말라고요?

우선 프론트나 다른 클라이언트들은 기존에 있는 API들이 좋은 것들이 많이 있기 때문에 굳이 추천하지는 않습니다만 iOS는 당연히 이거 써야겠죠? 나중에 써 보면 알려드리도록 하겠습니다. 다른 WWDC 관련 글들은 다음에 쓰도록 하겠습니다. 못난 글 읽어 주셔서 감사하고 즐거운 코딩 되세요!

전문이 보고 싶으시다면 WeatherKit WWDC Transcript 번역을 봐주세요

profile
IOS 공부중입니다

2개의 댓글

comment-user-thumbnail
2022년 6월 13일

👍👍👍

답글 달기