Współpraca z Mountain Lion's Notification Center za pomocą PyObjC

Próbuję wysłać powiadomienia do Mountain Lion z mojego skryptu Pythona i zareagować na kliknięcia powiadomień. Wysyłanie powiadomień działa już doskonale. Ale nie udało mi się przekonać Lwa, aby po kliknięciu oddzwonił do mojego skryptu.

Oto co robię. Zaimplementowałem klasę powiadomień. Jedynym celem instancji tej klasy jest dostarczenie powiadomień przez wywołanienotify(). W ten sam sposób ustawiam obiekt delegata aplikacji.

import Foundation
import objc
import AppKit

class MountainLionNotification(Foundation.NSObject, Notification):

    def notify(self, title, subtitle, text, url):
        NSUserNotification = objc.lookUpClass('NSUserNotification')
        NSUserNotificationCenter = objc.lookUpClass('NSUserNotificationCenter')
        notification = NSUserNotification.alloc().init()
        notification.setTitle_(str(title))
        notification.setSubtitle_(str(subtitle))
        notification.setInformativeText_(str(text))
        notification.setSoundName_("NSUserNotificationDefaultSoundName")
        notification.setUserInfo_({"action":"open_url", "value":url})
        AppKit.NSApplication.sharedApplication().setDelegate_(self)
        NSUserNotificationCenter.defaultUserNotificationCenter().scheduleNotification_(notification)

    def applicationDidFinishLaunching_(self, sender):
        userInfo = sender.userInfo()
        if userInfo["action"] == "open_url":
            import subprocess
            subprocess.Popen(['open', userInfo["value"]])

Teraz się spodziewałemapplicationDidFinishLaunching_() do wywołania po kliknięciu powiadomienia. Niestety to się nigdy nie zdarza. Co ja robię źle?

questionAnswers(1)

yourAnswerToTheQuestion