App과 extension 사이 데이터는 공유되지 않아 shared container를 사용해야 한다.
Configuration : 위젯을 식별. 위젯의 Content를 표시하면 SwiftUI View를 정의
Timeline Provider : 시간이 지남에 따라 위젯 View를 업데이트하는 프로세스 주도
SwiftUI View : WidgetKit에서 위젯을 표시하는데 사용하는 View
Editor의 Add Target에서 Widget Extension을 추가해준다.
@main
struct WeatherWidget: Widget {
let kind: String = "WeatherWidget"
var body: some WidgetConfiguration {
IntentConfiguration(kind: kind, intent: ConfigurationIntent.self, provider: Provider()) { entry in
WeatherWidgetEntryView(entry: entry)
}
.configurationDisplayName("My Widget")
.description("This is an example widget.")
}
}