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."
사용자의 파일을 호스트하고 관리하는 파일 제공자 확장을 빌드합니다.
iOS 파일 제공자 확장은 아래 작업 모두를 수행해야 합니다.
외부 앱은 UIDocumentBrowserViewController
혹은 UIDocumentPickerViewController
클래스를 사용해서 저장된 문서에 접근합니다. 이 클래스들은 저장된 문서와 폴더에 대한 브라우징 및 상호작용을 위한 표준 UI를 제공합니다. 그러나 파일 제공자 UI 프레임워크를 사용해서 브라우저의 컨텍스트 메뉴에 커스텀 액션을 추가할 수 있습니다.
파일 제공자를 위한 커스텀 메시지 인터페이스를 정의할 수도 있습니다. 베이스 API에서 제공되지 않는 기능을 추가하려면 이러한 인터페이스를 사용하시기 바랍니다. 더 많은 정보는 NSFileProviderService를 보시기 바랍니다.
NSFileProviderService
https://developer.apple.com/documentation/foundation/nsfileproviderservice
https://velog.io/@panther222128/NSFileProviderService
앱이 원격 서버에 저장된 문서에 접근을 제공할 떄에만 파일 제공자 확장을 구현하시기 바랍니다. 로컬에 저장된 문서에 접근을 제공하는 경우 파일 제공자 확장은 필요없습니다.
iOS에서 문서 디렉토리에 있는 파일에 외부 앱이 접근할 수 있도록 하려면, 앱의 Info.plist 파일에 적합한 키를 설정하시기 바랍니다. UISupportsDocumentBrowser
키(문서 브라우저 기반 앱에서)를 설정하거나 UIFileSharingEnabled
및 LSSupportsOpeningDocumentsInPlace
모두에 대한 키를 설정하시기 바랍니다.
이러한 키들은 다른 앱이 문서 디렉토리에 위치한 컨텐츠를 열거나 편집할 수 있도록 해줍니다. 파일은 파일 앱과 문서 브라우저 모두에서 나타납니다. 더 많은 정보는 UIDocumentBrowserViewController
클래스를 살펴보시기 바랍니다.
UIDocumentBrowserViewController
https://developer.apple.com/documentation/uikit/uidocumentbrowserviewcontroller
https://velog.io/@panther222128/UIDocumentBrowserViewController
iOS에서 드래그 앤 드롭을 지원하려면, 만약 애플리케이션이 원격 문서에 대한 드래그 소스 역할을 하는 경우 NSItemProvider
서브클래스의 registerFileRepresentation(forTypeIdentifier:fileOptions:visibility:loadHandler:)
메소드를 오버라이드 하고, 드래그된 아이템에 대한 URL을 반환해야 합니다. 이 URL은 확장의 urlForItem(withPersistentIdentifier:)
메소드에 의해 반환된 값입니다. URL은 로컬 파일 혹은 (만약 로컬 복사본을 갖고있지 않은 경우)파일의 플레이스홀더를 참조할 것입니다.
만약 URL이 플레이스홀더를 가리키면, 시스템은 파일 제공자 확장의 startProvidingItem(at:completionHandler:)
메소드를 호출하며, 파일 다운로드를 할 수 있는 기회를 제공해줍니다.
파일 제공자 확장을 위한 주요 클래스입니다.
https://developer.apple.com/documentation/fileprovider/nsfileproviderextension
https://velog.io/@panther222128/NSFileProviderExtension
앱 혹은 파일 제공자 확장으로부터 파일 제공자와 소통하기 위해 사용하는 매니저 객체입니다.
https://developer.apple.com/documentation/fileprovider/nsfileprovidermanager
https://velog.io/@panther222128/NSFileProviderManager