事实上,我阅读了以下文件:
我不太明白,有谁知道怎么做?
而且,这意味着什么:
有关于如何使用 LSRegisterURL 和 SMLoginItemSetEnabled 的任何示例?
答案 0 :(得分:9)
+ (void)startHelper {
NSURL *helperURL = [[[NSBundle mainBundle] bundleURL] URLByAppendingPathComponent:@"Contents/Library/LoginItems/YourHelper.app" isDirectory:YES];
OSStatus status = LSRegisterURL((CFURLRef)helperURL, YES);
if (status != noErr) {
NSLog(@"Failed to LSRegisterURL '%@': %jd", helperURL, (intmax_t)status);
}
Boolean success = SMLoginItemSetEnabled(CFSTR("com.yourcompany.helper-CFBundleIdentifier-here"), YES);
if (!success) {
NSLog(@"Failed to start Helper");
}
}
请注意,Helper必须与主要应用程序一起打包在“Contents / Library / LoginItems”目录中。您需要在构建期间创建它并在那里复制帮助程序。
答案 1 :(得分:3)
我找到了一个方便的链接:
http://www.delitestudio.com/2011/10/25/start-dockless-apps-at-login-with-app-sandbox-enabled/
编辑:很遗憾,此链接不再有效。也许有人可以提出更好的选择...这是一个很好的教程,用于在沙盒环境中注册登录项(如果有用)(我们最终都需要!)。重要的是,令人讨厌的是,你必须将你构建的主应用程序复制到Applications文件夹而不要做我做的事情,忘记沙箱帮助应用程序并向帮助程序添加Application is agent (UIElement)
行以值为TRUE
的plist。 NSLog
和控制台现在是你老式的调试朋友。
...只需要弄清楚如何让辅助应用程序启动主要应用程序,当它们都是沙盒..... 编辑:发现此问题: Cocoa: Sandbox entitlement to launch another application
答案 2 :(得分:0)
我从未使用LSRegisterURL
,我可以回答第一个问题:设置LSUIElement
位只需打开.plist并添加“Application is agent(UIElement)”行,然后将值设置为TRUE。
答案 3 :(得分:-1)
基本上,您必须查看Launch Services
这只是launchd
的包装,您可以通过查看终端中的man launchd
来查看。