일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Python
- Apple
- 개발자
- UIKit
- 그래프
- modal
- kotlin
- PyQt5
- 어플리케이션
- Chart
- cocoapods
- Xcode
- library
- graph
- androidstudio
- charts
- button
- UIButton
- UITableView
- Android
- PyQt
- Chrats
- Swift
- 라이브러리
- ios
- TableView
- Storyboard
- 개발
- ui
- alamofire
- Today
- Total
Jiwift
iOS 무료로 백업하는 기능 개발 후기 본문
iOS 앱 데이터 서버 없이 백업과 복원을 무료로 하는 법 (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를 통해서 접근을 가능하게 해야 함.
'내 작품 > 복붙태그' 카테고리의 다른 글
뉴비 iOS 개발자 앱 다국어(현지화) 완료 String Catalog (0) | 2024.02.29 |
---|---|
뉴비 iOS 개발자 앱 다국어(현지화) 준비하기 (1) | 2024.02.23 |
iOS 앱 데이터 서버 없이 백업과 복원을 무료로 하는 법 (0) | 2024.02.08 |
fastlnae을 간단하게 사용한 경험 (2) | 2024.02.07 |
iOS fastlane Unable to upload archive. Failed to get authorization for username '이메일' and password (0) | 2024.02.06 |