我是OSX开发的新手,我有一个状态栏应用程序,它假设一直停留在状态栏上,直到用户明确关闭它。
现在的问题是,如果用户从系统中注销,然后登录,应用程序就会关闭。
所以我的问题是如何让应用程序保持打开状态,或者在用户登录系统时如何自动重新打开它?
- 这个应用程序目前供我自己使用(不供应用商店使用),如果它能让它更容易的话
我今天也遇到了同样的问题,并找到了一种不同的(在我看来更简单的)方法来实现这一点。基本上,您可以创建一个launchd
作业,在用户登录时运行您的应用程序。
您需要以.plist文件(它是XML)的形式定义一个作业,它看起来像:
<?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>Label</key>
<string>com.capablemonkey.sleepApp</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/open</string>
<string>-W</string>
<string>/Applications/sleep.app</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
从那里,假设你可以让你的Cocoa应用程序运行一些命令行命令,你会想把你的文件复制到~/Library/LaunchAgents/
:
cp com.capablemonkey.sleepApp.plist ~/Library/LaunchAgents/
然后告诉launchd运行你的新工作:
launchctl load ~/Library/LaunchAgents/com.capablemonkey.sleepApp.plist
请参阅我的博客文章,了解node.js中的更深入的介绍和示例。它描述了如果用户决定不在登录时运行应用程序,也可以撤消此操作的方法,并检查launchd作业当前是否处于活动状态。
他们不需要运行脚本来自动启动应用程序。OSX内置了
用户可以拥有"登录项目"您可以在系统首选项>用户和组>登录项目中查看这些项目
话虽如此,你只需要了解你的应用程序如何将自己添加到这个列表中,这样当用户安装你的应用时,它就会将自己放置在那里。
你必须让你的应用程序在安装时运行一个脚本才能做到这一点。
我是一个新用户,所以我不能发布图片,但我发现了这个。。。
将应用程序添加到OSX";登录项目";在PackageMaker安装程序飞行后脚本期间
当然,另一件事是,如果这个应用程序只是供你自己使用,而不是供其他人使用,只需自己将其添加到你的登录项中,瞧!问题解决了。
希望这能有所帮助!
您可以考虑的一个选项是在登录时使用脚本启动应用程序(例如,在登录mac时运行脚本)。
一旦你开发了一个功能性脚本,你可以修改应用程序来安装脚本,也许是在第一次启动应用程序时,或者作为安装程序的一部分。