ku-ring / ios-app

쿠링 iOS 앱 v2 레포입니다. SwiftUI + TCA

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

@AppStorage 가 App Groups 간에 공유 가능한 UserDefaults 사용하도록 하기

x-0o0 opened this issue · comments

개요

위젯은 인앱에서 UserDefaults 에 저장한 값을 읽을 수 있어야 하고 인앱은 위젯이 UserDefaults 에 작성한 값을 읽을 수 있어야 합니다. App Groups 을 활성화하고 UserDefaults 에 App Groups 의 그룹 아이디를 넣어주면 위젯과 인앱 간에 데이터 공유가 가능합니다.

AppStorage & App Groups

@AppStorage(_:store:)storeUserDefaults(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 값 바꿀 수 있는 뷰를 쿠링랩에 추가하면 좋을 듯