我有一個也是協議處理程序的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