我已经设置了一个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?
答案 0 :(得分:3)
回应自己:
eventHandler 必须在applicationWillFinishLaunching中注册,而不是在applicationDidFinishLaunching中注册:
如果应用程序是由于URL处理程序而启动的,那么您仍然会获得evenHandler回调,但前提是您在启动过程中很快就会注册它。