NSFileProviderService

Panther·2021년 8월 11일
0

https://developer.apple.com/documentation/foundation/nsfileproviderservice

"A service that provides a custom communication channel between your app and a File Provider extension."

앱과 파일 제공자 확장 사이에서 커스텀 커뮤니케이션 채널을 제공하는 서비스입니다.

Declaration

class NSFileProviderService : NSObject

Overview

소통하도록 하려면 앱과 파일 제공자 확장 모두 서비스의 부분을 구현해야 합니다.

  • 앱은 프록시 객체를 요청하고, 이 객체의 메소드를 구현해야 합니다.
  • 파일 제공자 확장은 지원되는 서비스를 선언하고, 각 서비스에 대한 프로토콜을 구현하고 있는 프록시 객체를 보내야 합니다.

앱과 파일 제공자 확장은 XPC 서비스를 사용해서 소통합니다. 이 서비스는 파일 제공자 확장에 의해 관리되는 아이템에 한해서만 액션을 수행합니다. 더 많은 정보는 Creating XPC Services를 살펴보시기 바랍니다.

Creating XPC Services
https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingXPCServices.html#//apple_ref/doc/uid/10000172i-SW6

Defining the Service’s Protocol

서비스는 애플의 API에서 제공되지 않는 커스텀 액션을 정의할 수 있도록 해줍니다. 앱과 파일 제공자 확장 모두는 서비스의 이름 및 프로토콜을 수용합니다. 외부 소스를 통해 이름 및 프로토콜을 소탕하시기 바랍니다(예를 들어 이름과 프로토콜 모두를 정의하고 있는 헤더 파이 포스팅 혹은 이들 모두를 포함하고 있는 라이브러리의 퍼블리싱). 서비스는 앱 혹은 파일 제공자 확장에 의해 정의될 수 있습니다.

  • 앱은 사용하고자 하는 기능에 대한 서비스를 정의할 수 있습니다. 파일 제공자는 서비스 구현을 통해 이러한 기능 지원을 선택합니다.
  • 파일 제공자 확장은 지원하는 기능에 대한 서비스를 제공할 수 있습니다. 앱은 구체화된 서비스 사용을 위해 선택합니다.

서비스의 프로토콜을 정의할 때, 각 메소드에 대한 파라미터는 아래 규칙을 고수해야 합니다.

  • 파라미터의 클래스는 NSSecureCoding을 따르고 있어야 합니다.
  • 파라미터의 클래스는 앱과 파일 제공자 확장 모두에서 정의되어야 합니다(예를 들어 양쪽에서 임포트된 라이브러리에서 정의하고 있는 표준 시스템 타입 혹은 클래스)
  • 만약 컬렉션 파라미터가 속성 리스트 타입(Property List Types and Objects를 살펴보시기 바랍니다)이 아닌 타입을 포함하고 있다면, NSXPCInterface 클래스의 classes(for:argumentIndex:ofReply:) 메소드를 사용해서 유효한 타입을 선언해야 합니다.

Property List Types and Objects
https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/PropertyList.html#//apple_ref/doc/uid/TP40008195-CH44-SW2

0개의 댓글