我的应用程序运行一个启动守护程序,因此主应用程序可以与 iTunes 同步启动。守护程序运行没有问题。
但是,当我禁用守护程序在登录时启动时,守护程序已经启动并继续打开主应用程序,直到用户重新启动计算机并且守护程序关闭。
如何终止我的守护进程?因为它是一个没有界面的进程,所以应用程序是没有NSRunningApplication
.
编辑
值得一提的是,该应用程序必须被沙盒化。
我的应用程序运行一个启动守护程序,因此主应用程序可以与 iTunes 同步启动。守护程序运行没有问题。
但是,当我禁用守护程序在登录时启动时,守护程序已经启动并继续打开主应用程序,直到用户重新启动计算机并且守护程序关闭。
如何终止我的守护进程?因为它是一个没有界面的进程,所以应用程序是没有NSRunningApplication
.
值得一提的是,该应用程序必须被沙盒化。
好的,通过从守护程序服务列表中删除帮助应用程序,该应用程序会自动被终止。
- (void)setLaunchHelperAtLogin:(BOOL)launchHelperAtLogin {
if (launchHelperAtLogin != self.launchHelperAtLogin) {
// Creating helper app complete URL
NSURL *bundleURL = [[NSBundle mainBundle] bundleURL];
NSURL *url = [bundleURL URLByAppendingPathComponent:kHelperPath];
// Registering helper app
OSStatus status = LSRegisterURL((__bridge CFURLRef)url, true);
if (status != noErr) {
NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:status userInfo:nil];
NSLog(@"%@", error);
}
// Setting login
if (!SMLoginItemSetEnabled((CFStringRef)kHelperBundleIdentifier, launchHelperAtLogin)) {
NSLog(@"SMLoginItemSetEnabled failed!");
}
}
}