글
개발환경 : Xcode 12.0.1
1. wigetkit이란?
ios14부터 홈 화면에 widget을 넣을 수 있다. app이 가진 정보를 app을 열지 않고도 보여주고(일부) 필요할 경우 app을 실행해서 할 일 할 수 있게 해주는 정도의 기능이다.
애플 공식 가이드 글 : developer.apple.com/design/human-interface-guidelines/ios/system-capabilities/widgets
2. 기존 app에 추가하기 위해서는?
Xcode > File > New > Target > WidgetKit을 선택하면 된다
3. 개발시 UI 구성은 반드시 swiftUI로 구성해야 한다.
이 때 app의 개발환경과는 별도이므로 app은 storyboard, widget은 swiftUI로 구성할 수 있다.
- swiftUI 관련 내용은 다음 블로그 포스팅을 참고 했다.
4. widgetkit에서 파일을 추가할 경우 반드시 target membership을 확인한다.
target membership을 설정해야 app의 파일과 widgetkiet의 ***homewidget.swift이외의 파일 내용을 ***homewidget.swift에서 접근할 수 있게 된다.
target membership은 파일 선택후 file inspector(화면 우측 중앙)에서 변경 가능하다
설정하지 않았을 경우 다음과 같이 scope 에러가 나게 된다
5. widget은 timelineProvider가 제공하는 timelineEntry를 가지고 UI를 구성한다.
timelineprovider가 다음 entry를 제공하면 변경이 되게 된다.
5-1 timeline이 시간순으로 변경되는 중에 새로 갱신할 필요가 app에서 발생할 경우 다음과 같이 reload를 요청할 수 있다.
출처 : https://developer.apple.com/documentation/widgetkit/keeping-a-widget-up-to-date
6. widget 등록 화면에서의 데이터 보여주기
다음과 같이 homewidget의 preview 데이터를 제공하면 widget 등록시 해당 데이터를 보여주고 사용자에게 어떤 위젯 형태(small, medium, large)를 선택할지 도움을 줄 수 있다.
해당 preview가 적용된 위젯 선택 화면은 다음과 같이 나오게 된다.
* one more thing!!
app과 widgetkit이 클래스나 파일을 공유할 때는 target membership이면 되지만 데이터를 공유하기 위해서
app group을 설정해주어야 한다.
Xcode > project 설정 > signing & capabilities > Capability 에서 app group을 설정
설정하면 다음과 같이 나온다
RECENT COMMENT