实际上,我读到了以下文件:
我不太理解它,有人知道如何做吗?
此外,这是什么意思:
注意:在调用SMLoginItemSetEnabled函数之前,需要通过使用助手应用程序包的URL调用LSRegisterURL函数向启动服务注册。
是否有关于如何使用LSRegisterURL和SMLoginItemSetEnabled的示例?
实际上,我读到了以下文件:
我不太理解它,有人知道如何做吗?
此外,这是什么意思:
注意:在调用SMLoginItemSetEnabled函数之前,需要通过使用助手应用程序包的URL调用LSRegisterURL函数向启动服务注册。
是否有关于如何使用LSRegisterURL和SMLoginItemSetEnabled的示例?
+ (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");
}
}
请注意,辅助程序必须与主应用程序一起打包放置在“Contents/Library/LoginItems”目录中。您需要在构建过程中创建它并将其复制到该位置。
我找到了一个很方便的链接:
http://www.delitestudio.com/2011/10/25/start-dockless-apps-at-login-with-app-sandbox-enabled/
编辑:不幸的是,这个链接已经失效了。也许有人能提供更好的替代方案......
如果需要在沙盒环境中注册登录项,这是一个很好的教程(我们都需要最终实现这一点!)。重要的是,令人烦恼的是,你必须将构建的主应用程序复制到“应用程序”文件夹中,并且不要像我一样忘记将帮助器应用程序设置为沙盒环境,并在帮助器的plist中添加一个Application is agent (UIElement)
行,值为TRUE
。NSLog
和控制台现在是你老式的调试朋友。
......只需弄清楚如何在两者都被沙盒化的情况下让辅助应用程序启动主应用程序.....。 编辑:找到了这个问题: Cocoa: Sandbox entitlement to launch another application
我从未使用过LSRegisterURL
,但我可以回答第一个问题:要设置LSUIElement
位,只需打开 .plist 文件并添加行“Application is agent (UIElement)”,然后将值设置为TRUE。
基本上,您需要查看 Launch Services
,它只是 launchd
的包装器,您可以通过在终端中查看 man launchd
来了解它。
或者您可以查看这里的 SO 问题 如何使您的应用程序在登录时打开?