프로젝트 소개
- 계좌 정보를 저장하여 위젯으로 빠르게 계좌번호를 복사할 수 있는 앱입니다. iCloud 계정과 연동하여 계좌 목록을 백업하고 복구할 수 있습니다.
- 자세한 내용은 GitHub 저장소의 README 또는 App Store 페이지를 통해 확인하실 수 있습니다.
GitHub Repository
GitHub - devJungwonLee/AccountBook
App Store 페이지
계좌번호부 AccountBook
기획 동기
평소 지인에게 계좌번호를 알려주어야 할 때, 은행 앱을 실행하여 계좌 목록 화면에 진입하기까지 시간이 많이 소요되는 것에 답답함을 느껴 빠르게 계좌번호를 복사할 수 있는 앱을 개발하게 되었습니다.
프로젝트를 시작하기 전 RIBs 아키텍처에 대해 학습하면서 이를 적용할 수 있는 토이 프로젝트의 필요성을 느끼게 되었고, iOS 14부터 SwiftUI로 홈 화면에 위젯을 구현할 수 있도록 개편되었는데, 이를 이용하면 특정 계좌번호를 빠르게 복사할 수 있을 것 같아 해당 프로젝트를 기획하게 되었습니다.
기술적 도전
- 초기에 계좌 정보 저장을 위한 로컬 데이터 저장소로 Realm 라이브러리를 채택하여 개발하려 했으나, 이후 백업 및 복구 기능을 구현하기 위해 CloudKit을 사용해야 했고, CRUD 작업을 CoreData 프레임워크로 변경해야 했습니다. 하지만 해당 작업을 별도의 객체가 담당하도록 모듈적으로 설계하여 비즈니스 로직은 수정하지 않으면서 전환하는 작업을 마칠 수 있었습니다.
- RIBs 아키텍처를 사용하면서 push되거나 modal present 되는 화면은 별도의 RIB으로 생성하여 상위 RIB의 child RIB으로 붙여주었습니다. 하지만 사용자가 스와이프하여 pop하거나 dismiss한 경우, 별도의 조치를 취해주지 않으면 RIB이 detach 되지 않는 문제가 발생하였습니다. 따라서 이를 해결하기 위해 ViewController의
viewDidDisappear 시점에서 isMovingFromParent나 isBeingDismissed인 경우에 한하여 listener인 Interactor에게 RIB을 제거하라는 이벤트를 전달하도록 하였습니다.
- 정적인 위젯이 아닌, 사용자가 직접 지정한 계좌들로 구성할 수 있는 configurable 위젯을 개발해야 했기 때문에 Custom Intent를 정의하였습니다. 또한 위젯의 계좌를 지정할 때 현재 내가 동록한 계좌 목록을 로컬 데이터 저장소로부터 불러올 수 있도록 Intent Handler에 대한 동작을 구현하였습니다.
고민한 내용