안녕하세요. brody입니다.
이번 아티클은 앱에 대한 일회성 설정 수행이라고 하는데요.
아마도... 2020/08/28 - [공부/iOS] - About the App Launch Sequence 앱 런치 시퀀스에 대하여 에서 본 앱을 실행할 때
Custom Tasks를 할 수 있다고 했는데 하는 방법에 대해서 정리해놓은 문서 아닐까 라는 추측을 하면서~~
바로 시작해볼게요!
애플 원문 링크는 아래와 같습니다.
Performing One-Time Setup for Your App (앱에 대한 일회성 설정 수행)
앱 환경의 적절한 구성을 확인하십시오.
OverView
사용자가 처음으로 앱을 시작할 때 몇 가지 일회성 작업을 수행하여 앱 환경을 준비할 수 있습니다.
예를 들어 다음을 수행할 수 있습니다.
- 서버에서 필요한 데이터를 다운로드
- 문서 템플릿 또는 수정 가능한 파일을 App Bundle에서 쓰기 가능한 폴더로 복사합니다.
- 사용자에 대한 기본 환경 설정을 구성합니다.
- 사용자 계정을 설정하거나 기타 필요한 데이터를 수집합니다.
app delegate의 application (_: willFinishLaunchingWithOptions :) 또는 application (_ : didFinishLaunchingWithOptions :) 메소드에서 일회성 작업을 수행합니다.
사용자 입력이 필요 없는 작업에 대해 앱의 기본 스레드를 차단하면 안 됩니다.
대신 Dispatch queue를 사용하여 작업을 비동기 적으로 시작하고 앱 시작이 완료되는 동안 백그라운드에서 실행되도록 합니다.
사용자 입력이 필요한 작업의 경우 application (_: didFinishLaunchingWithOptions :) 메소드에서 사용자 인터페이스를 모두 변경합니다.
Install Files in the Proper Locations(적절한 위치에 파일 설치하기)
앱에는 파일을 저장하기 위한 고유한 container directory가 있으며 항상 ~/Library 하위 directory에 배치해야 합니다.
특히 아래와 같은 경우 ~/Library 하위 directory에 저장해야 합니다.
- ~/Library/Application Support/사용자의 다른 콘텐츠와 함께 백업할 앱별 파일을 저장합니다.
(필요에 따라 여기에서 사용자 지정 하위 directory를 만들 수 있습니다.) 데이터 파일, 구성 파일, 문서 템플릿 등을 이 directory에 사용합니다. - ~/Library/Caches/ 쉽게 재생성하거나 다운로드할 수 있는 임시 데이터 파일을 저장합니다.
앱 컨테이너의 directory 중 하나에 대한 URL을 얻으려면 FileManager의 urls(for:in:) 메소드를 사용하세요.
앱의 tmp/ directory에 임시 파일을 저장합니다.
임시 파일에는 콘텐츠를 추출하여 다른 곳에 설치한 후 삭제하려는 압축 파일이 포함될 수 있습니다.
FileManager의 tempporaryDiretory 메서드를 사용하여 앱의 임시 directory URL을 검색합니다.
Library 디렉터리는 설치된 앱의 xcappdata 파일을 열어보면 AppData > Library가 있죠. 여기입니다!
여기까지 입니다.
예상대로(?) appdelegate에서 제공하는 메소드들이 나왔군요.
정리해보자면
app delegate에서 제공해주는 메소드를 사용해서 앱이 실행되기 전에 앱 환경을 준비할 수 있다.
기본적으로 메인 스레드를 블록 하면 안 되고 백그라운드에서 작업하고 싶은 일이 있다면 dispatch queue를 사용해라.
임시파일과 백업할 파일은 ~/Library의 하위 디렉터리에서 사용해야 한다.
정도인 거 같네요.
파일 관련된 건 아직 감이 잘 안 오지만 조금 더 공부하면서 알아보도록 할게요.
예전에 Libarary가 아닌 Documents에 sqlite파일을 저장했었는데... Application Support에 옮겼어야 하나..?
이렇게 또 하나 알게 되어서 다행이네요 하하...
그럼 오늘은 여기까지 할게요~
ㅅㄱㄹ!
'공부 > iOS' 카테고리의 다른 글
[오류] Unit Test - No such module 'XXX' 해결하기 (1) | 2020.09.02 |
---|---|
About the App Launch Sequence 앱 런치 시퀀스에 대하여 (0) | 2020.08.28 |
iOS - Responding to the Launch of Your App(앱 시작에 대한 응답) (0) | 2020.08.15 |
iOS - Managing Your App's Life Cycle (앱의 Life Cycle 관리) (0) | 2020.08.12 |
iOS - App and Environment(앱과 환경) (0) | 2020.08.06 |