#cocoa #macos #login
#cocoa #macos #аутентификация
Вопрос:
Я разрабатываю приложение, которое хочу запускать автоматически при входе пользователя в систему. Есть несколько ответов о том, как это сделать, в частности, я использую код из этого репозитория GitHub, и он отлично работает.
Чего я хочу сейчас, и не смог найти, как это сделать, так это запустить приложение, но без отображения главного окна. Это происходит только тогда, когда приложение запускается при входе в систему, если приложение закрыто и пользователь открывает его щелчком мыши в Dock (или чем угодно еще), я хочу, чтобы оно показывало окно.
Возможно ли это? Есть идеи о том, как это сделать?
В системных настройках учетных записей, где вы устанавливаете приложения, которые запускаются при входе в систему, есть флажок «скрыть», который выполняет то, что я хочу, но я хочу сделать это программно.
Ответ №1:
Что ж, я нашел, как это сделать… Это сообщение об ошибке Open Radar помогло, я использовал неправильное свойство.
Вот код:
- (void)enableLoginItemWithLoginItemsReference:(LSSharedFileListRef )theLoginItemsRefs ForPath:(NSString *)appPath {
// We call LSSharedFileListInsertItemURL to insert the item at the bottom of Login Items list.
CFURLRef url = (CFURLRef)[NSURL fileURLWithPath:appPath];
CFMutableDictionaryRef inPropertiesToSet = CFDictionaryCreateMutable(NULL, 1, NULL, NULL);
CFDictionaryAddValue(inPropertiesToSet, kLSSharedFileListLoginItemHidden, kCFBooleanTrue);
LSSharedFileListItemRef item = LSSharedFileListInsertItemURL(theLoginItemsRefs, kLSSharedFileListItemLast, NULL, NULL, url, inPropertiesToSet, NULL);
if (item) {
CFRelease(item);
}
}
Решением было создать словарь с ключом kLSSharedFileListLoginItemHidden и значением true и передать его функции LSSharedFileListInsertItemURL.
Комментарии:
1. Привет, Маркос, у меня такая же проблема в моем приложении Mac OS X. Я попробовал ваш код, он установлен как скрытый (галочка включена) в User amp; Groups-> LoginItems для моего приложения после того, как я установил свое приложение на Mac OS X Lion. Но, когда я перезагружаю свой компьютер, открывается окно моего приложения, которое я хотел скрыть UIWindow вместо автоматического отображения. Не могли бы вы, пожалуйста, посоветовать мне, как я могу это точно исправить?
2. Спасибо за этот ответ, но как мне узнать, было ли приложение запущено автоматически или пользователем независимо от того, отображалось главное окно или нет? Спасибо!!
3. @marcos-crispino Не могли бы вы, пожалуйста, опубликовать код, в котором вы проверяете , было ли приложение открыто при входе в систему или открыто вручную?