如何为 OSX 创建守护程序/启动代理/后台应用程序?

Joh*_*mez 2 macos xcode objective-c launchd xcode5

我不太确定我在寻找什么有资格作为...代理、守护程序,或者只是一个没有 GUI 运行的小型后台应用程序。

我编写了一个在终端中运行的小型 obj-c 程序。它需要不断检查数据库中的值,并且每秒进行大约 2 次调用。我已经让它工作了,我只是不知道如何构建这个东西来发布......

理想情况下,我希望用户能够像普通 Mac 应用程序一样安装它,但我不确定这是否可行。我正在寻找类似于 Dropbox 在后台运行并通知用户新文件的方式,或者 LogMeIn 如何在后台运行某些东西,或者我还有一个名为 Aurora 的应用程序,它有一个名为“Aurora”的后台进程唤醒助手”。这些是我试图用这个小的 obj-c 程序模仿的例子。

我将如何构建它以在 Xcode 5 中发布?

Dmi*_*try 5

要将您的应用程序作为守护程序或代理运行,您应该创建一个 .plist 文件并将其放入/Library/LaunchDaemons/Library/LaunchAgents。示例.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>com.example.daemon</string>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/me/daemon</string>
        <string>-flag1</string>
        <string>-flag2</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>SessionCreate</key>
    <true/>
    <key>UserName</key>
    <string>mrDaemonUser</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

您可以在Daemons and Services Programming Guide 中找到更多信息。

要在用户计算机上安装您的应用程序,您应该创建一个安装程序包并编写一些脚本以将您的文件放在用户系统上的正确位置。有关更多信息,请参阅此线程:制作像 Pro 一样的 OS X 安装程序包