iOS/UIKit

UIDocumentInteractionController

당근쥬스 2019. 4. 2. 22:46
반응형

UIDocumentInteractionController 는 앱에서 직접 파일 형식을 처리 할 수 없는 파일을 미리보기와 파일을 다른앱에 전송해주는 컨트롤러입니다.

 

이번 프로젝트에서는 웹의 pdf파일을 받아서 미리 보여주고 다음앱으로 연동되는 예제를 살펴 보겠습니다. 아래 그림과 같이 pdf 파일을 미리 보여주기 하고, 사용가능항 앱 리스트를 보여주도록 하겠습니다.

 

 

PDF 미리보기
파일을 사용할 수 있는 앱 리스트

 

이 프로젝트에서는 URLSession, FileManager를 통해서 파일을 받고 저장하는 과정이 있으나 이부분은 다음에 더 자세하게 알아 보도록 하겠습니다.

 

우선 프로젝트를 생성을 합니다.

 

저는 "UIDocumentInteractionExample" 이라는 프로젝트를 선택 했습니다.

 

Main.storyboard의 ViewController 화면에 "Start Download" 버튼을 생성하고, "startFileDownload" 라는 함수에 연결을 시킵니다. 

파일 다운로그 함수.

파일 다운로드 부분을 생성합니다. 

샘플 파일을 찾는데 구글에서 "Sample pdf file"이라고 검색하시면 쉽게 찾으실 수 있습니다. pdf 뿐만 아니라 거의 모든 샘플 파일을 찾으실 수 있습니다.

샘플 pdf URL

pdf 다운로드 경로가 "http://" 로 되어 있기 때문에 "Info.plist" 파일에 아래와 같은 설정을 해 주셔야 합니다.

Info.plist

샘플 URL을 찾았아면 다음과 같이 URL 유효성 검사를 하고 URLRequest, URLSession 을 생성합니다. 

URLRuquest, URLSession 생성.

URLRequest, URLSession 에 대해서는 나중에 더 자세하게 살펴 보도록 하겠습니다. 지금은 그냥 "파일 다운받는데 쓰이는 한 과정이구나~" 라고만 생각 하시면 됩니다.

 

URLRequest, URLSession 이 다 설정 되었으면 아래와 같이 파일을 받아 옵니다.

파일 다운로드

이 부분에서 도 역시 데이터를 검증해서 에러 표시 해줍니다.

에러 코드 확인
받은 데이터 확인

Request 를 통해서 받은 데이터가 존재 한다면. FileManager를 이용해서 저장한 Directory를 생성합니다. 여기서는 폴더명을  "Filemanager Deirectory" 이라고 했습니다. 

(여기서 한가지 저도 조금더 공부를 해야하는 부분이지만, 폴더를 생성안해주면 저장이 안되었어요~ 이거 공부해서 알려드릴께요~)

다운로드 파일 저장 경로 생성.

FileManager를 통해서 폴더를 생성했다면 받은 파일은 "sample.pdf"라는 이름으로 파일을 저장합니다. 

파일 저장이 완료되면 call back 함수로 완료되었음을 알려줍니다.

파일 저장

파일 저장이 완료되고, 완료 신호를 받으면 드디어!!!! UIDocumentInteraction를 이용해서 미리 보기를 보여줍니다.

 

미리 보여주기 할 때 아래와 같이 UIDocumentInteraction의 Delegate 함수를 작성해 주어야 합니다.

documentInteractionControllerDidEndPreview는 작성하지 않아도 되지만, 

documentInteractionControllerViewControllerForPreview를 작성하지 않을 경우는 미리보기가 보여지지 않습니다.

UIDocumentInteraction Delegate

 

이제 모두 끝났습니다. 다운 받아 저장한 pdf파일의 미리 보기가 보여지며, 우측 상단 버튼을 누르면 해당 파일을 사용가능한 앱의 리스트가 보여집니다.

 

즐코딩 하세요~

 

UIDocumentInteractionExample.zip
0.04MB

 

반응형