2015-12-14 140 views
1

我有一個使用自定義URL方案在Swift中編寫的Mac應用程序。獲取用於啓動OS X應用程序的初始URL

如果應用程序正在運行並從鏈接打開,則一切正常。但是,如果應用程序沒有運行,那麼應用程序無法打開正確的頁面。

我註冊的通知是這樣的:

let eventManager = NSAppleEventManager.sharedAppleEventManager() 
eventManager.setEventHandler(self, andSelector: "handleGetURLEvent:replyEvent:", forEventClass: AEEventClass(kInternetEventClass), andEventID: AEEventID(kAEGetURL)) 

我如何從最初推出的網址:

func applicationDidFinishLaunching(aNotification: NSNotification) 

編輯1: 在我的應用程序委託我:

func handleGetURLEvent(event: NSAppleEventDescriptor?, replyEvent: NSAppleEventDescriptor?) 

該函數被調用,並且在應用程序已經打開時工作,但是當應用程序關閉時無法工作。

回答

0

你快到了!

Looking at a tutorial article you might be looking at at,您仍然需要實施處理「kAEGetURL」Apple事件的方法。

在您的應用程序委託,創建一個類似如下的方法:

func handleGetURLEvent(event: NSAppleEventDescriptor?, replyEvent: NSAppleEventDescriptor?) { 
    if let aeEventDescriptor = event?.paramDescriptorForKeyword(AEKeyword(keyDirectObject)) { 
     if let urlStr = aeEventDescriptor.stringValue { 
      let url = NSURL(string: urlStr) 

      // do something with the URL 
     } 
    } 
} 
+0

我有一個功能,在解決它我的應用程序委託,但它沒有正確觸發。 –

+0

你在哪裏註冊了你的'setEventHandler'? –

+0

in func applicationDidFinishLaunching(aNotification:NSNotification) –

1

我有完全相同的問題,並通過移動註冊調用到

applicationWillFinishLaunching(_ notification: Notification) 
相關問題