【发布时间】:2014-04-17 01:28:12
【问题描述】:
当我的应用程序启动时,我“很快”设置了一个 URL 处理程序: 在 -(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?
【问题讨论】:
-
它应该调用getUrl:withReplyEvent:,不是吗?否则我不明白一个问题。
-
是的,它应该,但它没有。请参阅下面的答案:我没有尽快注册 eventHandler!