Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- TCA
- cs
- widgetkit
- 웹
- 위젯킷
- c++
- 멋사
- spritekit
- 스위프트
- 네트워크
- Swift
- 문법
- 운영체제
- uikit
- 알고리즘
- composable architecture
- 후기
- 1일1알골
- dispatchqueue
- 백준
- 멋쟁이사자처럼
- 영남대
- widget
- 스유
- 대외활동
- Protocol
- SwiftUI
- 컴퓨터그래픽스
- 리액트
- swift concurrency
Archives
- Today
- Total
맛동산이
SwiftUI) WidgetKit을 사용해서 Widget을 만들기(4) - 앱의 데이터 변화를 위젯에서 감지하기 본문
위젯은 직접적인 데이터 변경을 알아차려도 이전포스트에서 말했듯, 스스로는 변경할수 없다.
이를 연동된 앱에서 명시적으로 알려줘야한다.
WidgetCenter
위의 명시적으로 알려주기 위한 객체가 바로 WidgetCenter이다.
우선적으로 위젯 센터는 다음과 같은 프로퍼티를 가지고 있다.
- kind : String
- family : widget family
- configuration : intent configuration 옵셔널
kind는 이전에 설명했던, 고유아이디.
family는 supportedFamily에 넣어주는 위젯의 크기를 알려주는 사이즈
configuration은 intent가 있으면 존재하는 configuration이다.
앱데이터 변경을 통해 위젯 변경하기
앱 내부의 데이터 변경을 timeline에 영향을 미치게 된다.
즉 timeline entry에는 새로운 데이터가 들어가고, provider는 새로운 데이터가 들어간 timeline을 생성하게 될것이다.
이때 기존의 timeline을 유지하는것이 아닌, 싹다 지우고 새로운 timeline을 생성하도록 하게 하면, 우리가 원하는 ui변경이 이루어질것이다.
방법은 간단하다.
WidgetCenter.shared.reloadTimelines(ofKind: "com.mygame.gamestatus") WidgetCenter.shared.reloadAllTimelines()
해당 두개의 메소드중 하나를 선택해서 하면 된다.
- 위젯센터를 통해서 push notification을 보내주면, widget이 ui를 변경하게 된다.
참고
반응형
'앱 > SwiftUI' 카테고리의 다른 글
SwiftUI) WidgetKit을 사용해서 Widget을 만들기(3) - EntryView (0) | 2023.08.28 |
---|---|
SwiftUI) WidgetKit을 사용해서 Widget을 만들기(4) - 앱에서 위젯으로 데이터 보내기 app Group (0) | 2023.08.28 |
Swift) Convenience init, Designated init을 사용해서 초기화하기 (0) | 2023.08.28 |
SpriteKit) SpriteKit과 scene에 대해서 [SwiftUI] (0) | 2023.08.28 |
SwiftUI) Environment, EnvironmentObject, EnvironmentValues (0) | 2023.07.05 |