지난번 위젯킷 블로그에서 위젯킷을 사용해 위젯을 구현하고 설정까지 완료했다고 생각했지만, 가장 중요한 부분이 남아있었습니다.
2024.10.24 - [Swfit] - [iOS] About WidgetKit - 1
바로 앱의 데이터와 위젯 데이터의 공유 문제입니다.
이번 글에서는 앱과 위젯 간의 데이터 동기화에 대해 자세히 알아보겠습니다.
현재 상태로는 위젯이 정상적으로 표시될 수는 있지만, 앱에서 데이터가 변경되었을 때 위젯에 해당 정보가 반영되지 않는 문제가 발생할 수 있습니다. 이 부분을 해결하기 위한 방법을 하나씩 살펴보겠습니다.
App Group
App Group은 애플이 제공하는 샌드박스 환경을 기반으로 한 데이터 공유 메커니즘입니다.
- Extension의 Bundle은 Container번들에 포함되어 있지만, 두 가지는 각각의 Container 보유
- 개별 Container에 데이터가 저장되기 때문에 App과 App Extension 사이에서는 데이터 공유 불가
- 이러한 문제점을 해결하기 위해 필요한 것이 App Group을 통해 데이터 동기화 작업 필요
How to use
1. TAGETS > Signing & Capabilities > + Capability
2. App Group 생성
- App Groups 섹션에서 + 버튼을 눌러 새 그룹을 만듭니다.
- 예: group.com.example.myapp
3. 각 TARGETS 에 App Group 추가
- 각 타겟에 들어가 위의 과정처럼 App Group 추가
4. UserDefaults SharedGroup 설정
- 기존의 standard가 아닌 suiteName으로 init
- appID가 appGroupIdentifier와 동일하도록 설정
- extensio의 경우 WidgetExtension에서도 동일하게 진행
5. 데이터 저장 및 로드
- 전달하고자 하는 정보 UserDefaults(SharedGroup) 에 저장
- 해당 데이터를 위젯 View에서 로드
위와 같은 과정을 진행했을 때
위와 같이 데이터 공유가 잘 되는 모습을 확인할 수 있습니다!!!
여기까지 Widget에 대한 내용과 Widget을 사용할 때 주의해야 할 점이었습니다~!
그럼 뿅
.
.
.
.
'Swift' 카테고리의 다른 글
[iOS] About Local Notification (0) | 2024.11.13 |
---|---|
[iOS] About 동시성 (0) | 2024.11.10 |
[iOS] About TDD (1) | 2024.10.30 |
[iOS] About Notification & Delegation (0) | 2024.10.26 |
[iOS] About WidgetKit - 1 (0) | 2024.10.24 |