사용자의 카드를 앱으로 등록 후 혜택을 위젯으로 확인할 수 있는 서비스
🍊 김경호(Huko) 🍅 서동운(Domb)
23/05 ~ 23/06 (2개월)
iOS
아키텍처 | 프레임워크 | 라이브러리 |
---|---|---|
MVVM | SwiftUI | Firebase Firestore |
WidgetKit | Firebase Storage | |
Combine | Realm |
BE
프레임워크 | 라이브러리 |
---|---|
Selenium | Beautiful Soup |
Firebase Firestore | |
Firebase Storage |
위젯에서 보여줄 카드를 선택할 수 있도록 편집 기능 제공
카드 데이터 초기에만 네트워크 통신, 데이터베이스에 저장하여 데이터 통신 비용 절감
프로퍼티 Binding, Observable 프로퍼티로 변경
private func bindingForCard(_ card: Card) -> Binding<Bool> {
Binding<Bool> (
get: {
viewModel.selectedCards.contains(card)
},
set: { newValue in
if newValue {
viewModel.selectedCards.append(card)
} else {
viewModel.selectedCards.removeAll(where: { $0 == card })
}
}
)
}
계층이 다른 뷰의 동일한 애니메이션 효과 부여
협업시 프로젝트의 개발 브랜치 통합과정에서 테스트, 프로젝트의 병합 충돌 방지
추푸 플랫폼 대응을 위한 DB Migration 작업 realm 유지보수향상 DB 처리속도 향상
Issue 1. 메인화면의 부자연스러운 애니메이션 -> SwiftUI의 View는 State 기반으로, 데이터 변경시, View가 새롭게 그려짐 -> Animation 로직과 충돌 -> ViewModel에 Iamge를 저장하여 해결 -> 하지만!! ViewModel이 UI 요소를 저장하고 있는것은 부자연스럽다고 판단 -> 다르게 처리할 수 있는 방식은 없는지, 데이터 변경 로직을 변경할 수는 없는지 고민중.
Issue 2. 위젯에서 모델과 데이터 공유
모델 App과 Widget에서 동일한 모델을 사용, Wiget, Intent Extension과 Scope 문제 -> Widget과 Intent Extension에서 접근 가능하도록 file target 처리 데이터 App Group 사용하여 데이터 Sharing