OS X URL处理程序,但是在启动应用程序时?

时间:2014-03-12 17:37:47

标签: macos cocoa

我已经设置了一个URL处理程序"很快就会#34;当我的应用程序启动时: in - (void)applicationDidFinishLaunching:(NSNotification *):

[[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(getUrl:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
LSSetDefaultHandlerForURLScheme((CFStringRef)@"myScheme", (__bridge CFStringRef)[[NSBundle mainBundle] bundleIdentifier]);

按预期工作,只要打开带有myScheme://方案的URL,就会调用getUrl:withReplyEvent:

但如果我的应用未运行(退出),如果在Safari中我打开了一个URL,例如myScheme:// some_valuable_info?action = doSomething,它启动了我的应用......但是怎么做我知道我已经通过URL处理程序启动了吗?如何获取触发我的应用程序启动的URL?

1 个答案:

答案 0 :(得分:3)

回应自己:

eventHandler 必须在applicationWillFinishLaunching中注册,而不是在applicationDidFinishLaunching中注册:

如果应用程序是由于URL处理程序而启动的,那么您仍然会获得evenHandler回调,但前提是您在启动过程中很快就会注册它。