"Create File Provider extensions that support different versions of iOS."
iOS의 다른 버전을 지원하는 파일 제공자 확장을 생성합니다.
iOS 11 및 이후 버전에서 파일 제공자는 컨텐츠를 열거해야 하고, 컨텐츠에 대한 추가적인 정보를 제공해야 하며, 표준 사용자 액션(예를 들어 삭제, 이름 변경, 이동)을 처리해야 합니다. 이러한 기능들을 사용해서 시스템은 파일 제공자의 컨텐트 브라우징을 위한 표준 UI를 제공할 수 있습니다.
iOS 10 및 이전 버전에서, 파일 제공자는 문서 제공자 확장의 오직 절반이었습니다. 이것은 마치 백엔드 역할을 했고, 문서 제공자에 의해 반환되는 모든 URL이 디스크에 파일로 백업되는 것을 보장합니다.
파일 제공자는 기본 파일에 대한 접근 관리에만 책임이 있습니다. 파일 제공자는 호스트 앱으로부터 읽기 및 쓰기 작동을 가로챕니다. 그렇게 함으로써 필요한 경우 파일을 다운로드 및 업로드할 수 있었습니다. 두 번째 확장(문서 picker 뷰 컨트롤러 확장)은 UI를 제공했습니다. 이러한 변경사항 때문에 파일 제공자 확장을 구현하는 것에 관여하는 작업들은 목표로 하고 있는 iOS 버전에 따라 달라집니다.
iOS 11 혹은 이후 버전에 대한 파일 제공자 생성 시 아래처럼 수행합니다.
NSExtensionFileProviderSupportsEnumeration
키를 YES
로 설정하는 것일 확실히 해야 합니다. 만약 새 확장을 생성하고 있다면, Xcode는 자동으로 이 키를 설정해줍니다.NSFileProviderExtension
클래스의 모든 메소드를 오버라이드해야 합니다(아이템 열거형 처리, 아이템 설명 제공을 하는 새 메소드를 포함하며, 사용자 액션에 대해 응답하는 메소드도 포합합니다). deprecate된 메소드는 오버라이드할 필요가 없습니다.NSFileProviderExtension
메소드가 deprecate되었다는 것을 기억해야 합니다. placeholderURL(for:)
, writePlaceholder(at:withMetadata:)
, documentStorageURL
, providerIdentifier
입니다. 이 메소드들은 새 NSFileProviderManager
클래스로 이동했습니다.iOS 11보다 이전 버전의 iOS를 타깃으로 하는 파일 제공자 생성 시 아래처럼 수행합니다.
providePlaceholder(at:completionHandler:)
, startProvidingItem(at:completionHandler:)
, itemChanged(at:)
, stopProvidingItem(at:)
입니다.더 많은 정보는 Document Provider를 살펴보시기 바랍니다.
Document Provider
https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/FileProvider.html#//apple_ref/doc/uid/TP40014214-CH18
호스트 앱에서 iOS 10 이전 버전을 지원하는 파일 제공자는 iOS 11 및 이후 버전을 지원하는 파일 제공자와 다른 브라우징 경험을 보여줍니다.
UIDocumentBrowserViewController
클래스는 iOS 11 혹은 이후 버전의 파일 제공자만을 표시합니다.UIDocumentPickerViewController
는 모든 파일 제공자를 표시할 수 있습니다.iOS 10 및 이후 버전을 지원하는 파일 제공자의 경우 문서 picker는 문서 picker 뷰 컨트롤러 확장에 상응하는 것에 의해 정의된 UI를 제시합니다.
iOS 11 및 이후 버전을 지원하는 파일 제공자의 경우 문서 picker는 표준 브라우저 인터페이스를 제시합니다. 이 인터페이스는 UIDocumentBrowserViewController
클래스에 의해 사용된 것과 동일합니다.
macOS를 위한 파일 제공자 확장을 생성합니다.
https://developer.apple.com/documentation/fileprovider/macos_support
https://velog.io/@panther222128/macOS-Support