Jiwift

iOS 무료로 백업하는 기능 개발 후기 본문

내 작품/복붙태그

iOS 무료로 백업하는 기능 개발 후기

지위프트 2024. 2. 19. 21:52
반응형

 
iOS 앱 데이터 서버 없이 백업과 복원을 무료로 하는 법 (tistory.com)

iOS 앱 데이터 서버 없이 백업과 복원을 무료로 하는 법

iOS 환경의 앱을 Swift로 구현하면서 앱 데이터 백업과 복원을 무료로 하는 방법과 생각을 공유합니다. 개인이 앱을 만들다 보면 서버 없이 구현하는 경우가 많습니다. 이런 경우 DB는 다양한 라이

jiwift.tistory.com

 
 지난번에 위와 같은 글을 작성한 적이 있습니다. 일단 생각한대로 개발을 진행했고 생각한대로 동작하는 것까지 완료했습니다.

하지만 압축 과정에서 사용한 ZIPFoundation 라이브러리가 패스워드를 지원하지 않았기 때문에 압축에 비밀번호는 못 걸었습니다.
 
 더 좋은 백업 방법이 있겠지만 왜 이 방법을 선택했냐면.. 그냥 해보고 싶었기 때문입니다. (공부를 하다 보면 새로운 걸 알아가는 게 재미가 있다…)

파일(Files) 앱과 내가 만든 앱이 어떻게 상호작용할 수 있는지 궁금하기도 했고 다른 방법들은 내가 iOS 개발을 계속한다면 언젠가는 꼭 만날 것 같았던 점도 있습니다.
 
 결론은 앱에서 Realm 데이터를 JSON으로 만들고 압축해서 내보냈고, 다시 불러와 압축을 풀어 JSON을 읽고 Realm에 저장했습니다. 압축에 패스워드가 없어서 사용자가 데이터를 볼 수 있지만 민감한 게 하나도 없기 때문에 상관없습니다.

JSON을 바로 공유해도 괜찮지만 사용자가 쉽게 수정할 수 있기 때문에 압축 방식을 선택했고 불러오는 것도 압축 이어야 하는 룰을 정했습니다.
 
 백업 순서 
1. Realm 데이터 JSON 구조로 변환 
2. JSON 데이터 앱 컨테이너에 저장 
3. ZIPFoundation을 사용해서 저장된 JSON 압축 후 앱 컨테이너에 저장
4. 압축된 파일을 공유하기 기능으로 파일(Files) 앱으로 공유 
 
 복원 순서
1. UIDocumentPickerViewController를 사용해서 ZIP 선택 후 앱 컨테이너에 저장
2. ZIPFoundation으로 압축 풀고 JSON 파일 앱 컨테이너에 저장
3. JSON을 읽어서 Realm에 저장
 
 개발에서 생긴 일
1. 저장된 파일들이 있는 경우 에러를 발생할 수 있음. 파일 명을 계속 바꾸기 보다는 그냥 기존 파일이 있으면 제거하기를 선택
2. UIDocumentPickerViewController에서 파일을 선택한 경우 startAccessingSecurityScopedResource를 통해서 접근을 가능하게 해야 함.

반응형