Mac:如何在应用程序中获取自定义URI参数

时间:2014-06-19 11:24:33

标签: objective-c macos uri-scheme

我为我的应用程序注册了URI Scheme“testscheme”。 我还在- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 中通过 NSAppleEventManager

注册了一个网址处理程序

在代码下面注册geturl处理程序

NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
[appleEventManager setEventHandler:self andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];

当我第一次从浏览器打开“testscheme:// some parameters”时(当我的应用程序没有运行时),操作系统会打开我的应用程序。

如果我检查命令行参数,我不会将“testscheme:// some parameters”视为命令行参数。

但是,如果我的应用程序已经运行时打开相同的URL,我会在注册了NSAppleEventManager的GetURL处理程序中获取URL。

我想在我的应用程序中通过命令行或GetURL处理程序在第一次启动时获取testscheme url参数。

我还检查了Mail.app,当我在浏览器中打开mailto:frank@wwdcdemo.example.com时,参数正确传递给Mail.app。 但是,如果我使用ps -ef同时检查命令行参数的Mail.app,我看不到除应用程序路径之外的任何参数。

请帮我解决这个问题。

谢谢和问候。

1 个答案:

答案 0 :(得分:0)

我通过在awakeFromNib而非applicationDidFinishLaunching

中注册GetURL eventHandler来解决此问题