소개 : sns 로그인을 지원하고 일정을 추가, 수정, 삭제할 수 있는 앱
프로젝트 기간 : 2023.1.9 ~ 2023.1.13
제리 |
---|
Jerry_hoyoung |
- Kakao, Apple Sign
- Firebase
- Keychain
- async await
- diffable datasource
카카오 로그인 | 애플 로그인 |
---|---|
![]() |
자동로그인 | 일정 관리 |
---|---|
UserId
로 각 멤버의 id값을 지정하고schedules
Array에 일정을 저장하였습니다
- ViewModel view에서 받은 이벤트를 가지고 데이터를 가공하여 UseCase에 전달
- View 사용자의 입력을 받아 ViewModel에 이벤트를 전달하고 ViewModel로부터 데이터를 가져와 화면에 출력
- Model 데이터 구조를 정의
- MVVM 구조에서
ViewModel
과View
의 데이터를 바인딩하기 위해Observable
클래스를 구현하여 사용
- Domain Layer내에는 비즈니스 로직이 있는
UseCase
와 model type인Entity
, Data layer의Repository Interface
를 가지고 있습니다 - 저희 앱에서는
Auth
,Schedule
,User
총 세가지의UseCase
로 구성되어 있어Repository
에서 받아온 데이터를 가공하여ViewModel
에 전달하거나 다시Repository
로 전송하는 역할 등을 하고 있습니다 Repository
객체가 아닌Interface
를 가지고 있어 의존성 역전을 통해 의존성을 없앴습니다
- Data Layer에서는 API 또는 Local storage로 접근하는 객체인
Repository
를 가지고 있습니다 - 저희 앱에서는 네트워크를 하는
Kakao
,Apple
,FireBase
그리고 local storage인Keychain
총 네가지의 Repository로 구성되어 있습니다
- 데이터 저장소인
Storage
객체는KeyChainStorage
,FirebaseStorage
가 있으며 각 저장소에 접근할 수 있는 method로 구성되어 있습니다
- 기존에 사용하던
completion handler
의 과도하게 중첩된callback
메서드와 에러 핸들링 로직을 개선하기 위하여async await
을 이용하였습니다 - 보기쉬운 코드의 구조를 구성할 수 있었고 throws를 이용한 error handling으로 가독성이 향상되었습니다
kakao Login sdk
내 구성되어있던completion handler
코드를 사용하는 경우withCheckedThrowingContinuation
를 활용하여 레거시 코드와 결합하는 방식을 익혔습니다
Reload
를 이용한tableView
값 갱신 로직의 끊기는 animation을 개선하기 위하여diffable datasource
로tableView
내 데이터를 관리하였습니다
- Auth에서 가져온
UserId
나access token
의 값을 안전하게 저장하기 위해KeyChain
을 활용하였습니다 KeyChain
에 접근하는 객체인KeyChainStorage
를 구현하였습니다
FireStore
를 이용하여 Remote DataBase를 구성하였습니다Firebase
의 data에 접근하는 객체인FirebaseStorage
를 구현하였으며field
나document
를update
,delete
,add
할 수 있습니다
- Facebook auth기능을 구현하지 못하였습니다
- FCM, APNS를 이용한 스케줄 알림 기능을 구현하지 못하였습니다