맛동산이

SwiftUI) WidgetKit을 사용해서 Widget을 만들기(4) - 앱의 데이터 변화를 위젯에서 감지하기 본문

앱/SwiftUI

SwiftUI) WidgetKit을 사용해서 Widget을 만들기(4) - 앱의 데이터 변화를 위젯에서 감지하기

진ddang 2023. 8. 28. 15:11

위젯은 직접적인 데이터 변경을 알아차려도 이전포스트에서 말했듯, 스스로는 변경할수 없다.

이를 연동된 앱에서 명시적으로 알려줘야한다.

WidgetCenter

Untitled.png

위의 명시적으로 알려주기 위한 객체가 바로 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를 변경하게 된다.

참고

bookmark

반응형