我正在尝试创建一个XPC服务,但似乎没有创建该服务。在我的服务的main方法中,我做的第一件事是调用syslog,以便我可以看到服务是否开始运行。这些日志消息永远不会出现在日志中。
我已经检查了所有包标识符,可执行文件名和包层次结构,但似乎仍然没有创建服务。在应用程序中,在我通过XPC服务连接创建并发送消息之后,立即调用我的事件处理程序,并出现XPC_ERROR_CONNECTION_INVALID错误。我正在使用基于C的XPC API。
我还能做些什么来确保至少创建XPC服务吗?
答案 0 :(得分:6)
事实证明,我需要对应用程序目标和XPC服务目标进行代码签名。这可以在Xcode项目构建设置中完成,并且可以设置为“Ad-hoc代码签名”而无需Mac开发人员证书。
答案 1 :(得分:2)
同时检查您的服务名称。我发现项目模板中的默认示例不包含完全限定名称。在客户端代码中,我不得不改变这个:
NSXPCConnection *connection = [[NSXPCConnection alloc] initWithServiceName:@"MyNetworkClient"];
到此:
NSXPCConnection *connection = [[NSXPCConnection alloc] initWithServiceName:@"com.example.MyNetworkClient"];
仔细检查XPC Target的捆绑ID是否是您用于服务名称的内容。在我的情况下,它没有启动XPC并且没有显示任何错误或控制台日志。
答案 2 :(得分:1)
我遇到了类似的错误,但解决方案只是:干净,干净的构建文件夹,构建。
然后,通过魔术,它按预期工作。