2013-10-21 6 views
0

XPC 서비스가 별도의 대상이 아니지만 응용 프로그램에서 수신기 위임을 구현하는 내장 클래스입니다. 온라인에서 볼 수있는 모든 예제에는 xpc 서비스 도구를 만드는 별도의 대상이 있으며이를 지원하기 위해 응용 프로그램 자원 폴더에 복사합니다 들어오는 연결. 내가 원하는 것처럼 그것을 할 수있는 방법이 있습니까?Mac OSX에서의 XPC 구현

+2

XPC를 사용하는 요점은 기능에 제한된 코드로 별도의 바이너리를 작성하고 제한된 권한을 할당하고 프로세스 간 통신을 통해 서로 통신하는 것입니다. 단일 바이너리 내에서 XPC API를 사용할 수 있는지는 모르겠지만 응용 프로그램 구성 요소를 나눠서 사용하지 않는 한 XPC를 사용하지 않는 이유는 무엇입니까? – BergQuester

+1

XPC는 별도의 프로세스를 처리하고 있습니다. 별도의 프로세스가 없다면 통신, 알림, 사용자 지정 대리인 등의 더 나은 방법이 있습니다. –

+0

@BergQuester를 수정하기 만하면됩니다. XPC 서비스를 실행하는 기본 방법은 바이너리를 통해 이루어 지지만 라이브러리 등 여러 개를 포함 할 수 있습니다. 라이센스가 필요하지 않은 한 별도의 바이너리를 가질 필요가 없었던 시간의 99.9999 %. –

답변

0

아니요 .. 무뚝뚝하고 주말을 망쳐 버려서 죄송합니다.

YouApp.app 
    Contents 
    XPCServices/ 
      SomeService.xpc 

는 "XPC"확장자가 너희를 속이는하지 마십시오 즉 뭔가를 서비스로

XPC의 실행, 그것은 지적이야 있지만 "응용 프로그램"평신도 용어에 넣어.

"YouApp.app"이 실행되면 launchd (맥을 만드는 큰 아빠)에게 알림이 전송되고 조사가 시작됩니다.

launchd가 (libxpc)에 대해 매우 까다로운 이유는 낮은 수준에서 실행되어 잠재적으로 해를 끼칠 수 있기 때문입니다. 그러나 허용 수준에서 실행되기 때문에 그들은 매우 콧물이 나서 직업을 수행하기 때문에 효율적으로

초보자가 시작하기위한 좋은 예입니다

https://developer.apple.com/library/mac/samplecode/SandboxingAndNSXPCConnection/SandboxingAndNSXPCConnection.zip

기본적으로 앱 1, 2 개 XPC 서비스가 있습니다.

다음과 같이 흐름은 간다 :

1) 앱은 앱이 인터넷 떨어져 뭔가를 다운로드 한 서비스를 요청 3) XPC 서비스를 실행할 수있는 권한을 부여 다른 것들) 사이에 (최대 2) launchd에를 발생하면 URL에 입력 할 수 있습니다 4) 서비스에서 다운로드하여 모든 서비스 (및 앱)에 액세스 할 수있는 장소에 저장합니다 (예 : 응용 프로그램 그룹). 5) 그런 다음 앱에서 다른 서비스에 "압축"하도록 요청합니다.

그게 전부입니다.

처음에 돌아 다니는 데 시간이 오래 걸리며 가장 실망스러운 것은 코드 서명입니다.

그냥 경고합니다. 이것을 잘 실행하려면, Xcode를 보내지 말고 터미널에서 코드화를 끝내십시오.

"눈을 뜨고 또 다른 것은"계획 "입니다. XPC 디버깅 설정이 올바르게 설정되어 있는지 확인하십시오. 또는 전혀 나타나지 않는 것처럼 보입니다.

마지막으로 Console은 친구입니다. D XPX를 디버깅 할 때 열어 두십시오.

관련 문제