@AppStorage 가 App Groups 간에 공유 가능한 UserDefaults 사용하도록 하기
x-0o0 opened this issue · comments
개요
위젯은 인앱에서 UserDefaults 에 저장한 값을 읽을 수 있어야 하고 인앱은 위젯이 UserDefaults 에 작성한 값을 읽을 수 있어야 합니다. App Groups 을 활성화하고 UserDefaults 에 App Groups 의 그룹 아이디를 넣어주면 위젯과 인앱 간에 데이터 공유가 가능합니다.
AppStorage & App Groups
@AppStorage(_:store:)
의 store
에 UserDefaults(suiteName:)
값을 넣습니다. 이때 suiteName
의 값은 App Groups 에 사용되는 그룹 아이디 이며 `"group.com.kuring.service" 입니다.^1
기대효과
인터랙티브 위젯을 통해 앱의 데이터를 읽고 쓸 수 있습니다.
- AppGroups 에서도 사용할 수 있도록 UserDefaults 작업할 때 온보딩 띄우는 작업도 같이 필요. 아래의 임시변수 대체하도록 수정
// KuringApp.swift
@State private var showsOnboarding: Bool = false
public extension UserDefaults {
static let shared = UserDefaults(suiteName: "group.com.kuring.service")!
}
@AppStorage("first.launch", store:UserDefaults.shared)
var isFirstLaunch: Bool = true
UserDefaults 값 바꿀 수 있는 뷰를 쿠링랩에 추가하면 좋을 듯