Когда приложение OS X запускается по зарегистрированной схеме URL, как вы получаете доступ к полному URL? - PullRequest
17 голосов
/ 16 марта 2012

Я работаю над приложением Какао, которое запускается / активируется с использованием URL-адресов с пользовательской схемой, которая зарегистрирована в файле Info.plist следующим образом:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>Open myscheme:// URLs</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myscheme</string>
        </array>
    </dict>
</array>

Мой вопрос: раз приложениезапускается или активируется, как мне узнать, какой URL был запущен приложением?В iOS это легко сделать с -application: openURL: sourceApplication: annotation: метод в UIApplicationDelegate, поскольку ему передается экземпляр NSURL.

Я хочу иметь возможность передавать данные в мое приложение с URL-адресами, такими как myscheme: // do / что-то / awesome

1 Ответ

23 голосов
/ 16 марта 2012

В делегате вашего приложения -applicationWillFinishLaunching: выполните:

[[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(handleAppleEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];

И handleAppleEvent:withReplyEvent: должно выглядеть примерно так:

- (void)handleAppleEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
    NSString *urlString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
    // do something with the URL string
}
...