2015-12-14 2 views
1

У меня есть приложение Mac, написанное в Swift с помощью специальной схемы URL.Получить начальный URL-адрес, используемый для запуска приложения OS X

Если приложение работает и открывается из ссылки, все работает отлично. Но если приложение не работает, тогда приложение не открывается на правильную страницу.

Я регистрации уведомлений, как это:

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

Как получить URL-адрес от первоначального запуска в:

func applicationDidFinishLaunching(aNotification: NSNotification) 

Edit 1: В моем приложении делегатом I есть:

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

в func applicationDidFinishLaunching (aNotification: NSNotification) –

1

У меня был точно такой же вопрос и решить ее путем перемещения регистрации вызова в

applicationWillFinishLaunching(_ notification: Notification)