DEV_Larva

WeatherKit 본문

iOS/WWDC

WeatherKit

NelchuPapa 2022. 11. 18. 23:18
반응형

최근 앱 개발 도중 이전 WWDC WetherKit에 대해 본 기억이 나서 날씨 관련 어플을 만들 때 사용해보고 싶다는 생각이 문득 들었다. 그래서 Apple Developer 공식 문서로 미리 학습을 진행하였다. 그리고 가끔 유튜브에서 자주 보는 iOS Academy라는 채널에 따끈따끈한 WetherKit에 대한 튜토리얼이 이미 나와있었다!!😍 근데 진행하다 보니 오류가 나면 안 되는 곳에서 오류가 나기 시작했고, 다시 공식 문서부터 가이드 영상까지 찬찬히 살펴보니 가장 큰 문제가 있었다. 그것은 바로..

 

따란~~

 

애플 개발자로 등록이 되어있지 않았던 나로서는 사용하고 싶어도 사용을 못한다는 것! 말 그대로 현재의 나로서는 그림의 떡인 기능이었던 것이다. 제대로 알아보지도 않고 또 무턱대고 화난 투우소 마냥 들이 박치기를 한 것인데..

 

그래서 어쩔 수 없이 WetherKit가 어떤 기능을 가지고 어떤 식으로 앱 내에서 작동하는지 등 전체적으로 해당 기능에 대해서 간략하게라도 배우고 싶었다. 그래서 오늘은 이 WetherKit에 대해 정리해보는 시간을 가져보자.

 


1. 등장 배경 

 

매일 아침 하루를 시작하기 전 기상 데이터를 확인하고 이를 통해 하루의 계획을 준비하는 경우 많다. 일반적인 경우부터 농업, 여행 등등 날씨 데이터가 영향을 미치는 영역은 갈수록 더욱 많아지고 있다. 그래서 지속 가능하며 정확한 기상 데이터는 변화하는 기후에 영향을 받는 요즘 세상에 빠질 수 없는 것이 되어 가고 있다. 그런 이유로 Apple은 WeatherKit를 고안해냈다.

 


2. 주요 기능

WeatherKit는 높은 수준의 기상 예보인 새로운 Apple Wether Service로 작동된다. 고해상도 날씨 모델과 기계 학습과 예측 알고리즘을 사용하여 가까운 지역의 기상을 알려준다. 해당 서비스를 통해 현재 기상 상태, 습도, 일몰, 일출, 등등 다양한 기능을 이용할 수 있다. 

높은 수준의 기상 데이터를 위해 그만큼 중요한 것이 정확한 지역 정보가 필요로 하게 되는데 Apple의 경우 대표적으로 떠오르는 것이 뭔가?

개인 정보 보호다.  그래서 WeatherKit에서는 어떤 개인 식별 정보와도 연관되지 않도록 공유하지 않는다고 한다. 본격적으로 WeatherKit를 통해 제공하는 이용 가능한 데이터 세트에 대해 알아보자.

 

 

워낙 많은 데이터 세트를 가지고 있기 때문에 사진을 통해 확인해보면 되겠습니다~ 

 


3. 구현 방법

WeatherKit는 네이티브 프레임 워크와 REST API를 통해 이용 가능하다. 먼저 Swift에서 사용하는 방법이 간단하다고 하는데 알아보자.

// Request the weather

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

가장 먼저 WeatherKit와 CoreLocation을 불러와주고 관심 있는 위치에 대한 좌표로 CLLocation을 만들어주자. 그리고 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을 만들어 줍니다. 그리고 Swift와 비슷하게 관심있는 지역의 위도와 경도를 입력해줍니다. 다음으로 앞에 나왔던 URL과 인증 토큰을 사용해서 기상 데이터를 가져오고 그 결과를 JSON형식으로 전환해주면 된다고 합니다. 이렇게만 보면 굉장히 간단해 보이지만 가장 먼저 인증 토큰을 요청할 당시 인증 처리를 위해 필요한 자세한 단계가 추가적으로 있다고 한다. 개발자 메인 페이지에서 활성화된 인증 키를 만들어야 하는데 이 애플 개발자 페이지에 접근하기 위해서는 가장 먼저 개발자 계정이 있어야 하기 때문에 없다면 사용하지 못한다. 더 자세한 사항들은 WWDC를 참고하거나 애플 공식 페이지에서 한번 확인해보록 하자!

 

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

 

WeatherKit - Apple Developer

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

developer.apple.com


4. 결론

한 번쯤은 사용해보고 싶은 weatherkit이었지만 어쩌겠는가 지금 당장은 개발자로 등록되어있지 않지만, 사용할 수 있는 날에는 꼭 한번 다음과 같은 기능은 나의 앱에 넣어 보고 싶기도 하다. 그래도 지금은 국내의 경우 기상청이나, 해외의 경우 OpenWetherMap과 같이 공공으로 사용할 수 있는 API를 사용하는 수밖에 없을 것 같다. 마지막으로 무언가 만들고 싶다고 무턱대로 맨땅에 헤딩⚽️ 하지 말고 자료조사를 해보고 하는 자세는 좀 더 연습해야 할 것 같다. 이 글을 보는 사람들도 꼭 나와 같은 실수를 하지 않았으면 좋겠습니다~~👍

반응형

'iOS > WWDC' 카테고리의 다른 글

Chart  (0) 2023.02.24