2017-01-10 5 views
2

Ich arbeite an einer Anwendung, wo ich zwei verschiedene XPC-Dienste von der Hauptanwendung getrennt habe. Ich möchte, dass ein XPC-Dienst mit einem anderen XPC-Dienst kommuniziert, der eine Verarbeitung durchführt und die Daten an den ersten Dienst zurückgibt, und dieser erste Dienst führt seine eigene Verarbeitung durch und gibt dann Daten an die Hauptanwendung zurück. Ich probierte das sogar aus, aber die Kommunikation zwischen den Diensten ergab einen Fehler, der "nicht mit der Hilfsanwendung kommunizieren konnte".XPC zu XPC Kommunikation

Meine Frage ist, dass entweder das möglich ist oder nicht? Wenn ja, was ist erforderlich?

Jede Hilfe wäre willkommen.

Antwort

2

So habe ich festgestellt, dass zwei Prozesse zwangsläufig nicht in der Lage sein werden, mit demselben XPCService zu kommunizieren. Wenn Sie versuchen, einen XPCS-Dienst zu starten, ist dies ein eindeutiger Prozess für den Startvorgang. Und soweit ich das beurteilen kann, können Sie nur mit einem XPCS-Service kommunizieren, mit dem Ihr Prozess gestartet wurde.

Also ich glaube, dass Ihr zweiter XPCService nicht in der Lage sein wird, den ersten XPCService zu starten, und daher nicht in der Lage ist, damit zu kommunizieren.

Das Beste, was Sie wahrscheinlich tun können, ist, dass Ihr zweiter XPCService zurück zu Ihrem Hauptanwendungsprozess kommuniziert, der dann mit dem ersten XPCService kommuniziert.

Sie tun könnte so etwas wie:

[[self.firstXPCConnection remoteObjectProxy] getSomeString:^(NSString *myString) { 
     [[self.secondXPCConnection remoteObjectProxy] passSomeString:myString]; 
    }]; 

Obwohl wichtigen Hinweis, ich habe nicht versucht. Aber das Beste, ich kann Ihnen mit dem Wissen helfen, das ich habe

+0

Sie können möglicherweise eine neue NSXPCConnection erstellen, indem Sie [-NSXPCConnection initWithMachServiceName: Optionen:] (https://developer.apple.com/documentation/foundation/nsxpcconnection/1418074-initwithmachservicename? Language = objc), solange der andere XPC über einen Delegaten verfügt, der die Verbindung akzeptiert. – user1118321

Verwandte Themen