Schritt für Schritt - Entwickeln für OS X und iOS
Schritt für Schritt - Entwickeln für OS X und iOS
Growl einbinden, Teil 2

Durch eine zusätzliche Methode im delegate, nämlich growlNotificationWasClicked, ist es möglich, auf das Anklicken des Growl Fensters zu reagieren. Dafür ist es zwingend nötig einen clickContext zu übermitteln. Ist dieser Parameter nil, wird die Methode nicht aufgerufen. Der clickContext ist es auch, den man vom Growl zurück gesendet bekommt. So ist es möglich, verschiedene Meldungen, die vielleicht gleichzeitig auf dem Bildschirm sind, zu unterscheiden.
- (IBAction)clickSendGrowlMessage:(id)sender
{
    [GrowlApplicationBridge notifyWithTitle:
@"Eine Nachricht"
                                       description:[inputTextField stringValue]
                                       notificationName:@"Hallo"
                                       iconData:nil
                                       priority:1
                                       isSticky:NO
                                       clickContext:@"Growl Nachricht"];
}

- (
void) growlNotificationWasClicked:(id)clickContext
{
    NSLog(clickContext);
}
Im Consolenfenster kann man sehr gut erkennen was passiert, wenn auf eine Growl Benachrichtigung geklickt wird.
stacks_image_05058DD9-7057-4C97-8001-FF7A5CC37AC9
Das Gegenstück dieser Methode ist growlNotificationTimedOut. Diese Methode wird aufgerufen, wenn die Growl Mitteilung ausblendet, ohne dass sie angeklickt wurde. Auch hier wird wieder der clickContext übertragen, obwohl nicht durch den Benutzer geklickt wurde.
stacks_image_C699CB7D-4FD2-4C34-BAA4-8D1990847A83
Die Methoden growlNotificationWasClicked und growlNotificationTimedOut benötigen übrigens keine Deklaration in der MyController.h Datei. Sind Sie im delegate implementiert, reicht es vollkommen, um sie aufzurufen.

Des weiteren ist es möglich, die Growl Meldungen mit einem eigenen Icon auszustatten. Um dies zu erreichen muss im delegate die Methode applicationIconForGrowl implementiert sein. Ist dies nicht der Fall, verwendet Growl das Icon der aufrufenden Anwendung.

Wie Sie ein Icon in Ihr Projekt bekommen, haben Sie bereits beim Erstellen des Geo Converters gelernt, ziehen Sie es einfach aus dem Finder in den Resources-Ordner der Groups & Files.
stacks_image_1224B513-0EE7-4527-9080-08C8DB92F3FE
Ist dies geschehen, können Sie es mit wenig Aufwand zu einem Icon für Growl Meldungen machen. In diesem Codebeispiel hat das Symbol den Dateinamen g-logo und ist von Dateityp Icon (.icns)
- (NSImage*) applicationIconForGrowl
{
    NSString* imageName =
    [[NSBundle mainBundle]pathForResource:
@"g-logo" ofType:@"icns"];

    NSImage* tempImage =
    [[NSImage alloc] initWithContentsOfFile:imageName];
    return tempImage;
}
stacks_image_0BB306FF-7E94-440D-881A-B0705154CFD4
Auch der Name, mit dem sich das Programm bei Growl registriert, kann vom Namen der Anwendung abweichen. Eine zusätzliche Methode macht dies möglich.
- (- (NSString*) applicationNameForGrowl
{
    return @"Growl Test von Cocoa-Coding";
}
stacks_image_712A6707-4B42-4277-90FB-1E8BA37CC9D6
Ein weiterer delegate Ausruf ist growlIsReady. Diese Methode wird automatisch ausgeführt, wenn Growl gestartet wird. Die Methode fragt nicht den aktuellen Status von Growl ab, sondern signalisiert nur, wenn Growl aktiviert wird. Um es zu testen, stoppen und starten Sie Grow in den Systemeinstellungen.
- (void) growlIsReady
{
    NSLog(@"growl is ready");
}