- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
对于沙盒应用,要创建启动项,Apple 建议您使用 LSRegisterURL(..)
和 SMLoginItemSetEnabled(..)
以及辅助工具。我已经按照我想要的方式设置了所有内容,但我想要一种方法(不存储首选项值)来获取“如果已注册”的状态。基本上是一种执行与 SMLoginItemGetEnabled(...)
相同操作的方法。
编辑:感谢 Rob Keniger 的回答,这是我的最终代码:
- (BOOL)startAtLogin {
NSDictionary *dict = (NSDictionary*)SMJobCopyDictionary(kSMDomainUserLaunchd,
CFSTR("com.yourcompany.app"));
BOOL contains = (dict!=NULL);
[dict release];
return contains;
}
最佳答案
接受的答案对我不起作用。此博客说“//注意:使用 SMJobCopyDictionary() 时的沙箱问题
”,这一定是问题所在。因此,如果您在沙盒中使用此处接受的答案时遇到问题,请尝试使用此方法。为我工作。
这一切都归功于 Mike Cohen。有关更多信息,请参阅他的博客文章:
http://blog.mcohen.me/2012/01/12/login-items-in-the-sandbox/
-(BOOL)appIsPresentInLoginItems
{
NSString *bundleID = @"com.madebynotion.myLoginHelper";
NSArray * jobDicts = nil;
jobDicts = (NSArray *)SMCopyAllJobDictionaries( kSMDomainUserLaunchd );
// Note: Sandbox issue when using SMJobCopyDictionary()
if ( (jobDicts != nil) && [jobDicts count] > 0 ) {
BOOL bOnDemand = NO;
for ( NSDictionary * job in jobDicts ) {
if ( [bundleID isEqualToString:[job objectForKey:@"Label"]] ) {
bOnDemand = [[job objectForKey:@"OnDemand"] boolValue];
break;
}
}
CFRelease((CFDictionaryRef)jobDicts); jobDicts = nil;
return bOnDemand;
}
return NO;
}
关于objective-c - SMLoginItemSetEnabled(...) GET 对应项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219920/
我正在尝试向 macOS 应用程序添加登录项。该应用程序在其 plist 中设置为代理,因此它没有停靠栏图标,在启动时隐藏其主窗口,并在状态栏中放置一个图标以提供其 UI。 要添加登录项,我有: 在项
我正在尝试使用 ServiceManagement 在登录时自动启动应用程序。主应用程序 (login-Item.app) 将启动器注册到登录项列表,启动器启动主应用程序(2 个独立的目标)。这是我的
这类似于这个问题: Error in Sandboxed App, When loading Helper (LoginItems), code signing issue 我得到的错误是相同的,但是
我有一个沙盒应用程序,其中包含一个显示一些 UI 的帮助程序(作为全屏窗口,但也可以是状态项或类似项)。 这在大多数情况下都有效。但有时却并非如此;它只是默默地无法启动助手。 由于助手有 UI,我使用
对于沙盒应用,要创建启动项,Apple 建议您使用 LSRegisterURL(..) 和 SMLoginItemSetEnabled(..) 以及辅助工具。我已经按照我想要的方式设置了所有内容,但我
我正在开发的沙盒 Mac 应用程序遇到一个非常奇怪的问题。一项要求是用户应该能够在系统启动时启动应用程序。为此,我使用 SMLoginItemSetEnabled(),如 http://blog.ti
将应用沙盒化后,如何使用“从登录时开始”功能制作应用? 最佳答案 谢谢CORY BOHON,他创建了以下教程: http://martiancraft.com/blog/2015/01/login-i
我正在使用 SMLoginItemSetEnabled 在登录时启动应用程序。一切正常,只是应用程序没有显示在“用户首选项”窗口的“登录项”下。我已经在 OS X Lion 中尝试过这个。 这是预期的
我是一名优秀的程序员,十分优秀!