Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/developeracademy-postech/2024-nc2-a14-weatherkit
Gureum & Pawn - WeatherKit
https://github.com/developeracademy-postech/2024-nc2-a14-weatherkit
swiftui weatherkit
Last synced: about 10 hours ago
JSON representation
Gureum & Pawn - WeatherKit
- Host: GitHub
- URL: https://github.com/developeracademy-postech/2024-nc2-a14-weatherkit
- Owner: DeveloperAcademy-POSTECH
- Created: 2024-06-13T11:45:54.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-06-20T12:56:19.000Z (5 months ago)
- Last Synced: 2024-06-21T11:37:33.332Z (5 months ago)
- Topics: swiftui, weatherkit
- Language: Swift
- Homepage:
- Size: 91.8 KB
- Stars: 0
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 2024-NC2-A14-WeatherKit
## ๐ฅ Youtube Link
(์ถํ ๋ง๋ค์ด์ง ์ ํ๋ธ ๋งํฌ ์ถ๊ฐ)## ๐ก About WeatherKit
> # **์์น๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ๋ฌ ์ข ๋ฅ์ ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ํ๋ ์ ์ํฌ**
>
> - Current weather -> ์ฒด๊ฐ ์จ๋, ์ต๋, ์์ธ์ , ์ด์ฌ์
> - Minute forecast -> ๊ฐ์ ํ๋ฅ , ๊ฐ์ ๊ฐ๋
> - Hourly forecast -> ์ฒด๊ฐ ์จ๋, ์ต๋, ์์ธ์ , ์ด์ฌ์
> - Daily forecast -> ์ต๊ณ ๊ธฐ์จ, ์ต์ ๊ธฐ์จ, ๋ฌ ํ์, ๊ฐ์๋, ์ผ์ถ, ์ผ๋ชฐ
> - Weather alerts -> ์ง์ญ, ์ํ๋
> - Historical weather -> ์ฒด๊ฐ ์จ๋, ์ต๋, ์์ธ์ , ์ด์ฌ์ ## ๐ฏ What we focus on?
> # Daily forecast - DayWeather
>
> - ์ท์ฐจ๋ฆผ ์ถ์ฒ / ๋ฌ ๋ชจ์ต ๋ณด์ฌ์ฃผ๊ธฐ / ๋น ์ค๋ ๋ ์๋ ค์ฃผ๊ธฐ / ์ ํฌ๋ฆผ ๋ฐ๋ฅด๋ผ๊ณ ์๋ ค์ฃผ๊ธฐ ๋ฑโฆ
> - ๋ ์จ๊ฐ ์ ์ข์ ๋ ๋๊ฐ๊ธฐ ์ซ์ดํ๋ ๊ตฌ๋ฆ๊ณผ ํฐ
> - ๋ ์จ ์ฑ๊ณผ ์ผ์ ๊ธฐ๋ก ์ฑ์ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ๋ณด๋ ๊ฒ์ด ๋ถํธํ๋ ์ํฉ์ Engage
> - ์ผ์ ์ ์ ํ๋ ๊ธฐ๋ฅ๊ณผ ๋ ์จ๋ฅผ ํ์ธํ๋ ๊ธฐ๋ฅ์ ํจ๊ป ์ ๊ณตํ์ฌ ๋ถํธํจ์ ์ค์ฌ๋ณด์!
> - ์ผ์ ์ ํฐ ์ํฅ์ ์ฃผ๋ ๋ ์จ ์ ๋ณด๋ ๋ฌด์์ผ๊น?
> - ๋ ์ง๋ณ๋ก ๋ ์จ(๋ํ), ์ต๊ณ ๊ธฐ์จ, ์ต์ ๊ธฐ์จ, ๊ฐ์ ์ฌ๋ถ, ์์ธ์ , ํ์ ์ ๋ณด ์ ๊ณต ํ์## ๐ผ Use Case
> **WeatherKit์ ํ์ฉํด [ ๋ ์จ ํ์ธ๊ณผ ์ผ์ ๊ด๋ฆฌ๋ฅผ ํตํฉ ]์์ผ**
>
>
> **[ ์ ํธํ์ง ์๋ ๋ ์จ์ธ ๋ ์ผ์ ์ ์ก๊ธฐ๋ฅผ ๊บผ๋ คํ๋ ์ฌ์ฉ์ ] ๊ฐ**
>
> **[ ๋ ์จ๋ฅผ ๊ณ ๋ คํด ์ผ์ ์ ์ก์ ๋ ํธ๋ฆฌ ] ํ๊ฒ ํด์ฃผ๋ ์บ๋ฆฐ๋**
>## ๐ผ๏ธ Prototype
![prototype1](https://github.com/YunKi-H/2024-NC2-A14-WeatherKit/assets/80469941/dd1636e9-faa5-4c8b-b3fa-45ef321b8a8c)
![prototype2](https://github.com/YunKi-H/2024-NC2-A14-WeatherKit/assets/80469941/f13276cd-9738-4b73-92d1-c5fd07726907)- ์ฌ์ฉ์์ ํ์ฌ ์์น ๊ธฐ์ค ์ค๋ํฌํจ ์ดํ ์ดํ๊ฐ ๋ ์จ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค (์์น ๊ถํ ์ฌ์ฉ ํ์ฉ์)
- ๋ ์จ ์ ๋ณด๊ฐ ์๋ ๋ ์ง์ ์ฃผ์ํ ๋งํ ํน์ด์ฌํญ์ ์๋ ค์ค (๊ฐ์, ์ถ์, ๋์, ์ผ๊ต์ฐจ, ๊ฐํ)
- ์ผ์ ์ด ์๋ ๋ ์๋ ์์ ์ํ์ ์ธ๋์ผ์ดํฐ๊ฐ ํ์๋จ
- ์ฌ์ฉ์๊ฐ ์ฝ์์ ์ก๊ธฐ ์ข์ ๋ ์จ์ธ ๋ ์ ๊ณจ๋ผ์ ์ผ์ ์ ์ก๊ธฐ ์์ํด์ง## ๐ ๏ธ About Code
```swift
import WeatherKit // **์ค์**
import CoreLocation.CLLocation // ์ํ๋ ์ผ๋ถ๋ง import ํ๊ณ ์ถ์ ๋/// Apple ์์ ์ ๊ณตํ๋ ๋ ์จ ์ ๋ณด ์ด๊ด ๊ฐ์ฒด
/// - WeatherService ๊ฐ์ฒด๋ฅผ ํตํด WeatherKit ์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ฌ ์ ์์
/// - WeatherService ๋ด๋ถ์ .shared ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํด์ผ ํจ (๋ค์ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์ง)
let weatherService: WeatherService = WeatherService.shared/// ๋ ์จ ์ ๋ณด๋ฅผ ๋ฐ์์ฌ ์์น (์์: C5 ์ขํ)
let location: CLLocation = CLLocation(latitude: 36.0135, longitude: 129.3263)Task {
/// weatherService ๊ฐ์ฒด์ weather(...) ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๋ ์จ ์ ๋ณด๋ฅผ ๋ฐ์์ฌ ์ ์์
/// .daily ์ธ์๋ .alerts, .current, .availability, .minute, .hourly ๋ฑ ์ํ๋ ์ข ๋ฅ์ ๋ฐ์ดํฐ ํธ์ถ ๊ฐ๋ฅ
/// ์ธ๋ถ ๋ฐ์ดํฐ ํธ์ถ์ด๋ผ ๋น๋๊ธฐ ํจ์์ด๊ณ , Error ๋ฐ์ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ [try, await] ํค์๋ ์ฌ์ฉ ํ์
let weatherData = try? await weatherService.weather(for: location, including: .daily)
/// ๋ฐ์์จ Forecast ํ์์ ๋ฐ์ดํฐ์์ ์ฌ์ฉํ๊ธฐ ํธํ๊ฒ [DayWeather] ํ์(๋ฐฐ์ด)์ผ๋ก ๋ณํ
let dayWeathers = weatherData.forecast
/// ๋ฐ์ดํฐ ๋ฐฐ์ด์์ ์ํ๋ ์ ๋ณด๋ฅผ ๋ฝ์ ์ฌ์ฉ
for dayWeather in dayWeathers {
print(dayWeather.lowTemperature.value) // ์ต์ ๊ธฐ์จ
}
}
```