Manchmal kann es wichtig sein, dass das Betriebssystem einen an eine Aufgabe erinnert oder einen Hinweis gibt. Dazu hat das Betriebssystem macOS die Funktion lokale Push-Notification anzuzeigen. Diese Nachrichten beinhalten Infos, was zum Beispiel was Programme gerade im Hintergrund machen oder fertiggestellt haben. Damit man noch einen Überblick behält, welche Nachrichten zuletzt eingegangen sind, werden diese in der Mitteilungszentrale sortiert angezeigt. Zuerst ein paar Grundlagen zu lokalen Push-Notification unter macOS.
Systemeinstellungen „Mitteilungen“
Die Nachrichten der einzelnen Apps, die Sie auf Ihrem Mac installiert haben, können Sie über die Systemeinstellungen „Mitteilungen“ konfigurieren. Dazu öffnen Sie Spotlight oben rechts über die Lupe oder per Tastenkombination CMD+Leertaste. Dann geben Sie das Wort Systemeinstellungen ein und drücken die Taste Return. Danach öffnet sich ein Fenster und dann klicken Sie auf das Symbol Mitteilungen. Dann sollten Sie das folgende Fenster sehen :
Hier können Sie als erstes die Nicht stören Funktion einstellen. Mit der Funktion Nicht stören, werden alle Nachrichten ausgeblendet und auf lautlos gestellt. Darunter werden alle Apps angezeigt, die irgendwelche Nachrichten anzeigen. Durch Klick auf die jeweilige App, kann die lokale Push-Notification konfiguriert werden.
Wie kann ich in eigenen Apps lokale Push-Notification anzeigen ?
Nun möchte ich Anhand ein paar Beispielen zeigen, wie man selber Nachrichten von Apps unter macOS anzeigen kann. Wie Sie ja schon gesehen haben, können die Nachrichten zwei unterschiedliche Formen annehmen. Einmal nur ein Banner, wo lediglich nur Text angezeigt wird. Das Banner verschwindet dann wieder nach ein paar Sekunden. Die andere Anzeigeform ist ein Hinweis, wo es zusätzlich zwei Buttons gibt für weitere Interaktionen.
Als erstes Beispiel, wo durch eine Aktion eine entsprechende Nachricht angezeigt wird, die wieder nach ein paar Sekunden verschwindet :
- (IBAction)showNotification:(id)sender{
NSUserNotification *notification = [[NSUserNotification alloc] init];
notification.title = @"Hello, World!";
notification.informativeText = @"A notification";
notification.soundName = NSUserNotificationDefaultSoundName;
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
}
Um jetzt eine Nachricht vielleicht zeitverzögert anzuzeigen, benötigen wir nur eine Zeile mehr. In Zeile 6 fügen Sie die folgende Zeile ein :
[notification setDeliveryDate:[NSDate dateWithTimeIntervalSinceNow:10]];
Nun wird die Nachricht mit einer Verzögerung von 10 Sekunden angezeigt. Nun kann es vorkommen, dass eine Nachricht zu einer bestimmten Uhrzeit und an einem bestimmten Tag angezeigt werden soll. Dazu benötigen wir den folgenden Quelltext :
- (IBAction)buttonClick:(id)sender {
NSUserNotification *notification = [[NSUserNotification alloc] init];
notification.title = @"Hello, World!";
notification.informativeText = @"A notification";
notification.soundName = NSUserNotificationDefaultSoundName;
[notification setHasActionButton:YES];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:17];
[comps setMonth:10];
[comps setYear:2019];
[comps setHour:0];
[comps setMinute:11];
[comps setSecond:0];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *date = [gregorian dateFromComponents:comps];
[notification setDeliveryDate:date];
[[NSUserNotificationCenter defaultUserNotificationCenter] scheduleNotification:notification];
}
Bei diesem Beispiel ist es egal, ob die Anwendung aktiv ist oder nicht. Die Nachricht wird durch das Programm in den Scheduler der Nachrichtenzentrale des Betriebssystems geschrieben und beim Erreichen des Zeitpunktes angezeigt. Zusätzlich hat diese Nachricht noch einen Schließen-Button, wenn für die App der Hinweisstil Hinweis konfiguriert ist.
Aktivierung der lokalen Push-Notification
Damit die obenstehenden Beispiele funktionieren, müssen diese natürlich noch in Ihrer App aktiviert werden. Das machen wir am besten gleich beim Starten der App. Dazu rufen Sie die Datei AppDelegate.h auf und änder die Interface Zeile wie folgt ab :
@interface AppDelegate : NSObject <NSApplicationDelegate, NSUserNotificationCenterDelegate>
Zusätzlich müssen noch die folgenden Einträge in die AppDelegate.m eingefügt werden :
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self];
}
- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification{
return YES;
}
Damit sind die lokalen Push-Notification innerhalb der App aktiviert und die oberen Beispiele zeigen entsprechende Nachrichten an.
Schreiben Sie mir in die Kommentare, wie Sie die Umsetzung von lokalen Push-Notification realisiert haben und ob Ihnen der Beitrag gefallen hat.