我有一个也是协议处理程序的Mac OS X应用程序(例如,Safari是HTTP和HTTPS协议的协议处理程序)。因此,当用户点击任何应用程序中的myscheme:// some-kind-of-info链接时,我的应用程序将启动以处理链接。Mac应用程序如何确定用于启动它的方法?
现在我需要能够确定应用程序是由这样的链接点击启动还是由其他方法启动。换句话说,除了点击链接之外,它都是通过任何方法启动的。 (在这些情况下,我希望应用程序保持打开状态,但如果它是由链接启动的,则应退出并忽略该链接。这种方式只在已经运行时才能运行。)
应用程序中是否有某种方式在启动时进行内省并发现它是由标准方法而不是AppleScript GetURL事件启动的?我想通过文档化的方法找出问题,而不是 - 例如 - 只需要我的应用程序在运行半秒后才打开这些链接。
我发现了一个我的特例的速记解决方案。我的应用在'NSScriptCommand'的子类中实现'performDefaultImplementation'来接收和处理URL。这个选择器在'applicationWillFinishLaunching'之后但在'applicationDidFinishLaunching'之前被触发......所以,就我而言,我只是在处理URL之前测试'applicationDidFinishLaunching'是否被触发。 – 2011-04-29 16:25:25
是的,这几乎是我在我的答案的最后一句话中所暗示的。很高兴你明白了。 – 2011-04-29 16:30:35
*如果我在应用程序委托中安装事件处理程序而不是使用'NSScriptCommand',我想我可以在'applicationDidFinishLaunching'中安装事件处理程序以获得相同的结果。 – 2011-04-29 16:31:45