macOS开发 开机自动启动

简介

建议不要默认就开启自启动,可以放到设置中,让用户自己选择开启/关闭。
Mac OS上运行的App,想要支持用户登录后App自动启动的功能,可以使用Service Management Framework 或 Shared File List实现。对于沙箱开启的应用,苹果推荐的做法是使用Service Management Framework;对于沙箱未开启的应用,苹果推荐使用Shared File List。Service Management Framework对于沙箱未开启的APP也是可以实现登录后自动启动的。二者的区别主要如下:

.使用Service Management Framework方式添加的登录项不会显示在系统偏好设置->用户与群组->登录项中,只有把应用.app文件移到废纸篓,自动启动才会失效。
.使用System Preferences方式添加的登录项会显示在系统偏好设置->用户与群组->登录项中,因此可以勾选隐藏按钮来控制自动启动的功能是否生效。

以下是Service Management Framework的实现方式

步骤

1.在主项目中添加target

我们需要注册一个Helper Target App用来作为开机自启动我们的NeewerLiveProject(主项目),点击Targets下面的加号,添加一个新的OS X APP。取名为NeewerLiveHelper(帮助项目)
在这里插入图片描述

2.分别开启NeewerLiveProject和NeewerLiveHelper的App Sandbox,注意两边的设置要一致

在这里插入图片描述

3.配置属性

  1. 删除NeewerLiveHelper(帮助项目)中的windows,让它没有可展示的Window。
    在这里插入图片描述

  2. 设置NeewerLiveHelper(帮助项目)的Info中Application is background only为YES
    在这里插入图片描述

  3. 在NeewerLiveProject(主项目)中添加CopyFile到Contents/Library/LoginItems
    在这里插入图片描述
    在这里插入图片描述

  4. 在NeewerLiveProject(主项目)中设置Build Setting 下Strip Debug Symbols During Copy为NO, 这个是默认的为No

  5. 在NeewerLiveProject(主项目)链接所需要的库Cocoa.framwork 和ServiceManagerment.framework

4.代码添加

  1. 主项目NeewerLiveProject AppDelegate方法中
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
   
	//在启动主项目的时候 发送通知 关闭帮助程序
  	 [[NSDistributedNotificationCenter defaultCenter]postNotificationName:@"TerminateAppHelperNotificationName" object:[NSBundle mainBundle].bundleIdentifie
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值