在 XPC 服务中托管可执行文件的系统。
dependencies: [
.package(url: "https://github.com/ChimeHQ/ProcessService", branch: "main")
]
要使其发挥作用,您还需要一个实际托管进程服务器的 XPC 服务。 使用 SPM 分发 XPC 服务需要一种变通方法:将预构建的二进制文件捆绑到 xcframework 中。 这带来了两个缺点。 它要求您链接并嵌入框架,这会产生大小和潜在的启动时间影响。 其次,它需要一个引导步骤,以确保服务可以在运行时在运行进程中的任何位置找到。
这都是可选的,并且为了方便起见而提供。 如果您愿意,您可以构建自己的服务。
import ProcessServiceContainer
ServiceContainer.bootstrap()
let userEnv = try await HostedProcess.userEnvironment(with: ServiceContainer.name)
与服务交互
import ProcessServiceClient
let userEnv = try await HostedProcess.userEnvironment(with: "com.myxpcservice")
let process = HostedProcess(named: "com.myxpcservice", parameters: params)
let data = try await process.runAndReadStdout()
以下是如何创建 XPC 服务。 确保将服务包 ID 与您使用的名称匹配。
// main.swift
import Foundation
final class ServiceDelegate: NSObject, NSXPCListenerDelegate {
func listener(_ listener: NSXPCListener, shouldAcceptNewConnection newConnection: NSXPCConnection) -> Bool {
do {
try newConnection.configureProcessServiceServer()
} catch {
return false
}
newConnection.activate()
return true
}
}
let delegate = ServiceDelegate()
let listener = NSXPCListener.service()
listener.delegate = delegate
listener.resume()
我们很乐意听取您的意见! 通过 issue 或 pull request 联系我们。
请注意,本项目根据贡献者行为准则发布。 参与本项目即表示您同意遵守其条款。