Приложение NSApplicationDelegate активно из-за протокола URL - PullRequest
3 голосов
/ 25 июня 2010

Эй!У меня настроено приложение Mac для запуска по протоколу myApp: //, который вызывается в браузере, например Safari, но я не могу выполнить какое-либо действие, когда приложение вызывается по этому протоколу.Метод делегата должен выглядеть примерно так:

- (void)applicationDidBecomeActiveByURL:(NSURL *)protocol;

Я не знаю этого, потому что я новичок в разработке для Mac, но я несколько хорош в разработке для iPhone, поэтому я знаю способ разработки для iPhoneно не путь разработки Mac

1 Ответ

8 голосов
/ 25 июня 2010

Вам нужно использовать NSAppleEventManager.Вы знаете, AppKit предшествует Интернету, OS X по-прежнему работает в основном с файлами, не относящимися к схемам URL и т. Д. UIKit иногда лучше.Прочитайте это Apple Doc .

На практике: сначала зарегистрируйте обработчик в applicationWillFinishLaunching:

-(void)applicationWillFinishLaunching:(NSNotification *)aNotification {
    NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
    [appleEventManager setEventHandler:self 
                           andSelector:@selector(handleGetURLEvent:withReplyEvent:)
                         forEventClass:kInternetEventClass andEventID:kAEGetURL];
}

, а затем внедрите обработчик

- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
    NSString *urlAsString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
    ... do something ... 
}

Вам также необходимо зарегистрировать свою схему в Info.plist.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...