[iOS | SwiftUI] 위젯

someng·2024년 7월 26일
0

iOS

목록 보기
34/35

SwiftUI를 활용한 위젯 구현에 대한 기본적인 부분을 정리해 보았다.
(짧은 기간동안 서치한거라 잘못된 개념이 있을 수 있으니 참고 부탁드리고, 수정이 필요한 부분이 있다면 댓글 부탁드립니다 🙇🏻‍♀️)

🔮 위젯의 구성요소

  • WidgetBundle : 여러 위젯을 사용 하기 위한 컨테이너
  • WidgetConfiguration : 위젯의 Body 같은 역할
  • AppIntentConfiguration : 위젯의 구성 요소 이며 위젯에 대한 타이머 설정, 뷰 등을 설정 할수 있다
    • kind : 위젯의 고유값. 대부분 Bundle Indentifier 를 사용하는 것으로 보인다
    • intent : 위젯을 커스텀 할 수 있는 객체 (위젯 새로고침)
    • content : 위젯 View
  • WidgetConfigurationIntent : 위젯을 구성 하기 위한 모델

🚃 위젯 구현 방법

  1. 위젯 target 추가 (Widget Extension)
  2. WidgetConfiguration 설정 (사용자가 구성할수 있는 속성 유무에 따라 Static / Intent 로 나뉨)
  • 위젯 식별자
  • TimeLineProvider
    • getTimeline(): 위젯을 업데이트할 시기를 WidgetKit 에 알리는 역할
    • placeholder() : 데이터 불러오기 전 placeHolder 설정
    • getSnapshot() : 위젯 갤러리에서 보여주는 미리보기 스냅샷 - 샘플 데이터 사용 권장
  • TimeLineEntry: 위젯을 표시할 날짜와 위젯 데이터 지정하는 Model 개념
  • SwiftUI 위젯 뷰
    • Provider 로부터 entry 전달받음
    • 위젯 지원 크기 별로 View 구현
  • 위젯 갤러리에 노출되는 위젯 이름과 설명
  • 위젯 지원 크기 (복수 선택)

🍥 실무에서 참고할 기타 내용

  • 민감정보 가리기

    • 아이폰 설정 > FaceID 및 암호 > 잠겨 있는 동안 접근 허용 > 잠금화면 위젯 허용 ON/OFF 가능
      • 허용 OFF 인 경우, placeHolder 혹은 커스텀 plcaeHolder 뷰 노출
    • 기기 잠금 상태일 때 위젯 컨텐츠 숨기기 가능
  • 앱의 위젯이 위젯 갤러리에 나타나려면 사용자는 앱을 설치한 후 최소한 한 번은 위젯이 포함된 앱을 실행해야 한다.

👣 정리하며..

미세먼지 위젯이나 버스도착 정보 위젯처럼 컨텐츠가 실시간으로 업데이트 필요한 경우 얼만큼의 주기로 timeLine을 설정해야 하는지가 중요할 것 같다. 서비스마다 가장 효율적인 timeLine이 달라질텐데 실무에서 해당 부분을 경험한 후에 포스팅하러 오겠돠~ (아마도)

참고자료

profile
👩🏻‍💻 iOS Developer

0개의 댓글

관련 채용 정보