У меня есть меню в виде песочницы (без значка док-станции), которое в окне настроек пользователя позволяет пользователю установить флажок, чтобы запуск приложения при входе в систему. Я использовал LSSharedFileList api, но поскольку это больше не разрешено для изолированных приложений, я перешел на использование SMLoginItemSetEnabled. То, что я нашел, заключается в том, что, хотя приложение будет запускаться при входе в систему, как и ожидалось, если я вернусь к настройкам и сниму галочку и заново проверю флажок запуска при регистрации, я получаю второй экземпляр моего приложения для меню.Установить приложение MacOS X menubar для запуска при запуске
Вот мой помощник приложение код (в приложении делегата):
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSString * path = [[[[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]
stringByDeletingLastPathComponent]
stringByDeletingLastPathComponent]
stringByDeletingLastPathComponent];
[[NSWorkspace sharedWorkspace] launchApplication:path];
[NSApp terminate:nil];
}
Вот код в моем окне настроек (главное приложение):
- (IBAction)toggleLoginStatus:(NSButton*)sender{
if(!SMLoginItemSetEnabled((__bridge CFStringRef)@"myAppBundleIdentifier", (BOOL)[sender state])){
NSLog(@"Dagnabit!");
}
}
После запуска второго экземпляра флажок снятия или повторной проверки флажка не запускается экземпляров. Кто-нибудь знает, что происходит? Спасибо
Crap! Кажется, что проблема немного глубже, чем она первоначально появилась. На моем новом MB Pro 15, работающем с Yosemite, снятие/проверка запуска при входе в систему вызывает запуск второго экземпляра, тогда как на моем старшем 2008 MB Pro 15, также работающем с Yosemite, не запускается второй экземпляр. Я добавил код, чтобы проверить, запущено ли приложение. В обоих случаях приложение запускается при входе в систему, но новый показывает это странное поведение. У кого-нибудь есть идеи. – Lazloman