gpt4 book ai didi

macos - 在 Mac 应用程序沙箱内使用 LaunchAgent

转载 作者:行者123 更新时间:2023-12-03 16:07:41 48 4
gpt4 key购买 nike

你会如何使用 LaunchAgent沙箱里面?我想在我的主应用程序中分发一个无 UI LaunchAgent 应用程序包,我可以按需启动它。我想要这个而不是 XPC 服务的原因是为了 KeepAlive 选项,这将阻止 launchd 在空闲时自动终止我的进程。 XPC 服务上不存在此选项。

文档说有一个 plist 需要复制到 ~/Library/LaunchAgents 中,而这在沙箱内显然是不可能的。是否有某种系统 API 可以为我处理 plist 的复制?我见过苹果的SMJobBless示例代码,但这似乎是用于注册特权 LaunchDaemon 而不是非特权 LaunchAgent。

最佳答案

您正在寻找的 API 是 SMLoginItemSetEnabled() 。您必须将长期运行的代理打包为常规 .app bundle ,并将其放入位于 Content/Library/LoginItems 的主应用 bundle 中。

然后,在主应用程序运行时,您可以使用带有代理包标识符的 SMLoginItemSetEnabled() 调用来启用和禁用您的代理。如果您的主应用程序退出,代理仍保持事件状态。如果用户注销并重新登录或重新启动,操作系统将在用户重新登录时重新启动您的代理。

更新:正如 Dmitry 所说,该文档不再附带我最初提到的示例,而是另一个 Apple sample code project对于 App Sandbox,演示了相同的 API(请参阅文件 NSXPCConnection+LoginItem.m)。

关于macos - 在 Mac 应用程序沙箱内使用 LaunchAgent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17263714/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com