iOS 14 WidgetKit ์นด์นด์คํก ์ ์ฉ๊ธฐ
iOS 14๋ถํฐ ๋์
๋์๋ค. ํ ํ๋ฉด์์ ๋ฐ๋ก ์ฑํ
๋ฐฉ์ผ๋ก ๊ฐ ์ ์๋ค.
- Swift UI๋ฅผ ๋ฐ๋์ ์ฌ์ฉํด์ผ ํ๋ค.
- ํ ํ๋ฉด์ ๋ฃ์ ์ ์๋ค.
- ๋ณต์กํ UI ์ฒ๋ฆฌ์ ๋งค์ฐ ์ ํ์ ์ด๋ฉฐ ๊ถ์ฅํ์ง ์๋๋ค.
- ์์ ฏ ๋ฒ๋ค๋ก ๋์ผ ์์ ฏ์ ๋ค์ํ ํํ๋ก ์ ๊ณตํ ์ ์๋ค.
- snapshot(): ์์ ฏ์ ํ์ฌ ์ํ๋ฅผ ๊ฐ๋๋ค.
- timeline(): Entry Array(ํ์ฌ, ๋ฏธ๋)๋ฅผ ๊ฐ๋๋ค.
Configuration
- Provider: ์์ ฏ์ ๊ฐฑ์ ์ ๋ด๋นํ๋ค. Provider๋ฅผ ํตํด timeline์์ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ณ ์์ ฏ์๊ฒ ์ ๊ณตํ์ฌ ์์ ฏ์ด ๊ฐฑ์ ๋๋๋ก ํ๋ค.
- ViewContent: UI๋ฅผ ๋ด๋นํ๋ค.
App Extension
์์ ฏํท ๋ํ ์ฑ ์ต์คํ
์
์ด๊ธฐ์ ํธ์คํธ์ฑ๊ณผ ์์์ ๊ณต์ ํ๊ธฐ ์ํด์๋ Shared Container๋ฅผ ๊ตฌ์ฑํด์ผ ํ๋ค.
๊ธฐ์กด์ ์นด์นด์คํก๊ณผ ํก ์๋์ ๊ตฌ๋ณํด์ ๊ตฌํํ์์ง๋ง, ์์ ฏํท์ ์ ์ฉํด์ ํ๋์ ๋ฒ๋ค์์์ ์ฌ๊ณตํ๊ฒ ๋์๋ค. ๊ตฌ์กฐ์ฒด ๋ด์ ๋ฒ๋ค๋ค์ ๋ฃ์ด ๋ฌถ์๋ค.
import WidgetKit
import SwiftUI
@main
struct KakaoTalkWidgetBundle: WidgetBundle {
@WidgetBundleBuilder
var body: some Widget {
KakaoTalkWidget()
TalkDriveWidget()
}
}
๊ฐฑ์ ์ฒ๋ฆฌ
- ์์ ฏ์ ๊ฐฑ์ ์ฃผ๊ธฐ๊ฐ ์ผ์ ํ์ง ์๋ค.
- ์์คํ
์ ๋ฐ๋ผ ์ค์ฐจ๊ฐ ๋ฐ์ํ ์๋ ์๋ค.
- ์ค์๊ฐ ์
๋ฐ์ดํธ๊ฐ ํ๋ค ์ ์๋ค.
๊ฐฑ์ ์ฒ๋ฆฌ ํด๊ฒฐ๋ฐฉ๋ฒ
- ์์ ฏ์ ๊ฐฑ์ ์ด ์ด๋ฃจ์ด์ง๋ ์์ ์ด ๋ช
ํํ ๊ฒฝ์ฐ์๋ ์ค์๊ฐ ์
๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํ๋ค.
- ๋ด๊ฐ ์ํ๋ ํน์ ์์ ฏ์ ๊ฐฑ์ ํ ์ ์๋ค(reloadTimelines).
- ๋๋ ์์ ฏ ๋ฒ๋ค ๋ดใ
์ ๋ชจ๋ ์์ ฏ์ ๊ฐฑ์ ํ ์ ์๋ค(reloadAllTimelines).
๋น๋๊ธฐ ์ด๋ฏธ์ง ์ฒ๋ฆฌ
- Provider์์ ์ด๋ฏธ์ง๊น์ง ์์ฑํ ์ดํ์ Entry์ ๋ฃ์ด์ผ ํ๋ค.
- ์ ๋ฐ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์์ ํด์ผ ํ๋ ์ผ์ด ๋ฐ์ํ ์๋ ์๋ค.
UI ๋์์ธ
- ๋ฐฐ๊ฒฝ์์ด ๋ถํฌ๋ช
ํ๋ค.