Схема URL - Qt и mac

Я пытаюсь реализовать настраиваемую схему URL-адресов для своего приложения. Я добавил необходимые строки для своего Info.plist. После вызова указанного URL-адреса (например: myapp: //) приложение запускается.

Если я хочу обработать URL-адрес, я нашел следующие шаги:

@interface EventHandler : NSObject {
}
@end

@implementation EventHandler
- (id)init {
    self = [super init];

    if (self) {
        NSLog(@"eventHandler::init");

        NSNotificationCenter* defaultCenter = [NSNotificationCenter defaultCenter];
        [defaultCenter addObserver:self
                        selector:@selector(applicationDidFinishLaunching:)
//                        name:NSApplicationWillFinishLaunchingNotification
          name:NSApplicationDidFinishLaunchingNotification
                        object:nil];
    }
    return self;
}

- (void)applicationDidFinishLaunching:(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* url = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
    NSLog(@"%@", url);
}

@end

Приведенный выше код работает, если приложение запущено, но если URL-адрес вызывается и приложение было завершено, событие не обнаруживается. Я думаю, это потому, что это: NSApplicationDidFinishLaunchingNotification . Изменение его на NSApplicationWillFinishLaunchingNotification вызывает перехват не событий. Возможно, Qt справится с этим раньше меня, но я не могу найти решение проблемы.

7
задан acfoltzer 3 July 2011 в 16:09
поделиться