2017-01-10 6 views
2

Я работаю над приложением, в котором я выделил две различные службы XPC из основного приложения. Я хочу, чтобы служба XPC связывалась с другой службой XPC, которая будет выполнять некоторую обработку и вернет данные на первую услугу, и первая служба будет выполнять свою собственную обработку, а затем вернет данные в основное приложение. Я даже пробовал это, но связь между службами дает ошибку, которая «не могла общаться с вспомогательным приложением».XPC to XPC Communication

Мой вопрос в том, что это возможно или нет? Если да, то что требуется?

Любая помощь будет оценена по достоинству.

ответ

2

Итак, я обнаружил, что два процесса неизбежно будут неспособны связываться с одним и тем же XPCService. Это связано с тем, что если вы попытаетесь запустить XPCService, это будет уникальный процесс запуска. И насколько я могу судить, вы можете общаться только с XPCService, что ваш процесс запущен.

Поэтому я считаю, что ваш второй XPCService не сможет «запустить» первый XPCService и, следовательно, не сможет связаться с ним.

Лучшее, что вы, вероятно, можете сделать, это вернуть второй сервис XPCService к основному процессу приложения, который затем связывается с первым XPCService.

Вы могли бы сделать что-то вроде:

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

Хотя оговорке, я не пробовал. Но самое лучшее, что я могу вам помочь в знаниях, у меня есть

+0

Возможно, вы сможете создать новое NSXPCConnection с помощью [-NSXPCConnection initWithMachServiceName: options:] (https://developer.apple.com/documentation/foundation/nsxpcconnection/1418074-initwithmachservicename? Language = objc), если другой XPC имеет делегат, который будет принимать соединение. – user1118321