2012-10-30 24 views
4

我試圖創建一個XPC服務,但該服務似乎沒有被創建。在我的服務的主要方法中,我所做的第一件事是對syslog進行一些調用,以便我可以看到服務是否開始運行。這些日誌消息不會出現在日誌中。XPC沒有爲XPC服務創建任何進程

我已經檢查過所有包標識符,可執行文件名稱和包層次結構,但服務似乎仍未創建。在應用程序中,在我通過XPC服務連接創建併發送消息後,立即調用了我的事件處理程序,並帶有XPC_ERROR_CONNECTION_INVALID錯誤。我正在使用基於C的XPC API。

還有什麼我可以嘗試做,以確保XPC服務至少被創建?

+0

嗨,也許你可以告訴我如何看待所有xpc服務(它是由'launchctl'或其他命令完成的?)謝謝! – Zohar81

回答

5

事實證明,我需要對應用程序目標和XPC服務目標進行編碼簽名。這可以在Xcode項目構建設置中完成,並且可以設置爲「Ad-hoc代碼簽名」而無需Mac開發人員證書。

enter image description here

+0

任何想法如何在XCode6中做到這一點? – Devarshi

+0

您仍然可以在Xcode 6中以這種方式更改代碼簽名設置。 –

1

我也有類似的錯誤,但解決方案只是:乾淨,整潔build文件夾,訂做。

然後,通過魔法,它按預期工作。

2

另請檢查您的服務名稱。我發現項目模板中的默認示例不包含完全限定名稱。在客戶端的代碼,我不得不改變這一點:

NSXPCConnection *connection = [[NSXPCConnection alloc] initWithServiceName:@"MyNetworkClient"]; 

這樣:

NSXPCConnection *connection = [[NSXPCConnection alloc] initWithServiceName:@"com.example.MyNetworkClient"]; 

仔細檢查了XPC目標的包ID是您所使用的服務名稱。在我的情況下,它沒有啓動XPC,也沒有顯示任何錯誤或控制檯日誌。

+0

謝謝!超級惱人的是,默認的XPC服務模板沒有得到正確的結果。 – ipmcc

+0

嗨,也許你可以告訴我如何看待所有xpc服務(通過launchctl或其他命令完成)?謝謝! – Zohar81