[iOS-factor] VIII. 데이터의 지속성
데이터를 저장할 때는 Apple의 가이드라인을 지키세요.
2018.06.03
by Felix Krause, translated by pilgwon
목차
- 시작하며
- I. 디펜던시(Dependencies)
- II. 설정(Config)
- III. 개발/라이브 동일시하기(Dev/prod parity)
- IV. 배포(Deployment)
- V. 원격보다 로컬 선호하기(Prefer local over remote)
- VI. 이전 버전과 호환되는 API(Backwards compatible APIs)
- VII. 앱 버전 정하기(App versioning)
- VIII. 데이터의 지속성(Persistence of data)
Apple의 가이드라인에 따라 데이터와 설정을 저장하는 것은 앱의 라이프 사이클에 치명적입니다. 특히 iCloud 동기화, 새로운 폰으로 업그레이드 그리고 백업에서 폰을 복원하는 경우에서 그렇습니다.
Apple의 공식 iOS 데이터 저장 가이드라인을 따르고 있는지 확인하세요.
Documents
: 이 폴더는 유저가 생성한 컨텐츠를 위해 사용하세요. 이 폴더는 백업이 될 것입니다.Caches
: 이 폴더는 다시 생성할 수 있는 데이터를 위해 사용하세요.tmp
: 이 폴더는 임시 파일을 위해 사용하세요.- 파일에
백업하지마세요(do not back up)
속성을 사용하세요.
위의 폴더에 민감한 사용자 정보(패스워드나 세션)를 저장하지마세요. 대신에 Keychain API를 사용하세요.
Keychain API는 데이터가 기기에 어떻게 저장될지에 대한 컨트롤을 제공합니다. 다양한 속성이 앱의 라이프 사이클에 어떻게 영향을 미치는지 잘 알고 있어야 합니다.
사용자가 새로운 iOS 기기로 업그레이드를 할 때, 데이터(예. 로그인 세션)는 마이그레이션 되나요? 라는 질문은 종종 간과되는 질문이지만 자기 자신에게 꼭 물어봐야 하는 질문 중 하나입니다.
만약 kSecAttrAccessibleWhenUnlockedThisDeviceOnly
를 사용했기 때문에 데이터가 iCloud나 iTunes 백업에 저장되지 않는다는 것은 사용자가 기기를 업그레이드하면 모든 데이터를 잃는다는 것을 의미합니다.
전체 소스 코드는 GitHub에서 확인하실 수 있습니다.
이 프로젝트는 Felix Krause에 의해 시작되었습니다.
이 프로젝트는 Apple과 아무 관계가 없습니다.