Creating a File Provider for iOS

Panther·2021년 8월 11일
0

https://developer.apple.com/documentation/fileprovider/creating_a_file_provider_for_ios

"Build a File Provider extension that hosts and manages the user’s files."

사용자의 파일을 호스트하고 관리하는 파일 제공자 확장을 빌드합니다.

Overview

iOS 파일 제공자 확장은 아래 작업 모두를 수행해야 합니다.

  • 필요한 경우에만 다운로드하는 원격 파일에 플레이스홀더를 생성합니다.
  • 파일 제공자가 읽기 발생 전 원격 서버로부터 데이터를 다운로드 혹은 업데이트할 수 있도록, 호스트 앱으로부터 읽기를 가로챕니다.
  • 필요한 경우 확장이 원격 서버에 대한 변경사항을 업로드할 수 있도록, 쓰기 이후 호스트 앱으로부터 노티피케이션을 시도합니다.
  • 저장된 문서와 폴더를 열거합니다.
  • 아이템 임포팅, 이동, 이름 재설정, 삭제와 같은 액션을 저장된 문서 및 폴더에서 수행합니다.

외부 앱은 UIDocumentBrowserViewController 혹은 UIDocumentPickerViewController 클래스를 사용해서 저장된 문서에 접근합니다. 이 클래스들은 저장된 문서와 폴더에 대한 브라우징 및 상호작용을 위한 표준 UI를 제공합니다. 그러나 파일 제공자 UI 프레임워크를 사용해서 브라우저의 컨텍스트 메뉴에 커스텀 액션을 추가할 수 있습니다.

파일 제공자를 위한 커스텀 메시지 인터페이스를 정의할 수도 있습니다. 베이스 API에서 제공되지 않는 기능을 추가하려면 이러한 인터페이스를 사용하시기 바랍니다. 더 많은 정보는 NSFileProviderService를 보시기 바랍니다.

NSFileProviderService
https://developer.apple.com/documentation/foundation/nsfileproviderservice
https://velog.io/@panther222128/NSFileProviderService

Determine If Your App Needs a File Provider

앱이 원격 서버에 저장된 문서에 접근을 제공할 떄에만 파일 제공자 확장을 구현하시기 바랍니다. 로컬에 저장된 문서에 접근을 제공하는 경우 파일 제공자 확장은 필요없습니다.

iOS에서 문서 디렉토리에 있는 파일에 외부 앱이 접근할 수 있도록 하려면, 앱의 Info.plist 파일에 적합한 키를 설정하시기 바랍니다. UISupportsDocumentBrowser 키(문서 브라우저 기반 앱에서)를 설정하거나 UIFileSharingEnabledLSSupportsOpeningDocumentsInPlace 모두에 대한 키를 설정하시기 바랍니다.

이러한 키들은 다른 앱이 문서 디렉토리에 위치한 컨텐츠를 열거나 편집할 수 있도록 해줍니다. 파일은 파일 앱과 문서 브라우저 모두에서 나타납니다. 더 많은 정보는 UIDocumentBrowserViewController 클래스를 살펴보시기 바랍니다.

UIDocumentBrowserViewController
https://developer.apple.com/documentation/uikit/uidocumentbrowserviewcontroller
https://velog.io/@panther222128/UIDocumentBrowserViewController

Support Drag and Drop

iOS에서 드래그 앤 드롭을 지원하려면, 만약 애플리케이션이 원격 문서에 대한 드래그 소스 역할을 하는 경우 NSItemProvider 서브클래스의 registerFileRepresentation(forTypeIdentifier:fileOptions:visibility:loadHandler:) 메소드를 오버라이드 하고, 드래그된 아이템에 대한 URL을 반환해야 합니다. 이 URL은 확장의 urlForItem(withPersistentIdentifier:) 메소드에 의해 반환된 값입니다. URL은 로컬 파일 혹은 (만약 로컬 복사본을 갖고있지 않은 경우)파일의 플레이스홀더를 참조할 것입니다.

만약 URL이 플레이스홀더를 가리키면, 시스템은 파일 제공자 확장의 startProvidingItem(at:completionHandler:) 메소드를 호출하며, 파일 다운로드를 할 수 있는 기회를 제공해줍니다.

See Also


Essentials

NSFileProviderExtension

파일 제공자 확장을 위한 주요 클래스입니다.

https://developer.apple.com/documentation/fileprovider/nsfileproviderextension
https://velog.io/@panther222128/NSFileProviderExtension

NSFileProviderManager

앱 혹은 파일 제공자 확장으로부터 파일 제공자와 소통하기 위해 사용하는 매니저 객체입니다.

https://developer.apple.com/documentation/fileprovider/nsfileprovidermanager
https://velog.io/@panther222128/NSFileProviderManager


0개의 댓글