当OS X应用程序通过注册的URL方案启动时,如何访问完整的URL



我正在开发一个Cocoa应用程序,该应用程序使用带有自定义方案的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上,使用UIApplicationDelegate上的-application:openURL:sourceApplication:annotation:方法很容易,因为它传递了一个NSURL实例。

我希望能够通过类似的URL将数据传递到我的应用程序中myscheme://do/something/awesome

在应用程序代理的-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
}

相关内容

  • 没有找到相关文章

最新更新