Eine lokale Benachrichtigung ist eine Nachricht, die die App ohne Beteiligung eines entfernten Servers an den Benutzer sendet. Alle Daten werden direkt auf dem Gerät des Empfängers verarbeitet und angezeigt. Dieser Mechanismus eignet sich für Erinnerungen, Timer und Wecker, wenn die App im Hintergrund ist oder geschlossen wurde. Laut Apple Developer Documentation bietet UNUserNotificationCenter eine zentrale Verwaltung lokaler Benachrichtigungen auf iOS.
Wichtige Punkte
Eine lokale Benachrichtigung ist eine Trigger-Nachricht, die vom Betriebssystem auf demselben Gerät erzeugt und angezeigt wird, auf dem die App installiert ist. Im Gegensatz zu Push-Benachrichtigungen durchlaufen lokale Benachrichtigungen keinen externen Server — die gesamte Planungslogik läuft auf dem Client.
Solche Benachrichtigungen funktionieren unabhängig vom Zustand der App: aktiv, minimiert oder vollständig geschlossen. Das Betriebssystem übernimmt die Zustellung zum geplanten Zeitpunkt, während der Entwickler nur den Inhalt und den Auslöser angibt.
Das System garantiert die Zustellung lokaler Benachrichtigungen auch ohne Netzwerkzugriff. Dies ist ein entscheidender Vorteil gegenüber Push-Benachrichtigungen, die eine stabile Internetverbindung und einen funktionierenden Server erfordern.
Jede lokale Benachrichtigung besteht aus drei Teilen: Inhalt (Titel, Text, Ton), Auslöser (Zeit- oder Ortsbedingung) und Anfragekennung. Die Kennung ermöglicht das Abbrechen oder Aktualisieren der Benachrichtigung vor der Zustellung.
Ein Entwickler kann bis zu 64 lokale Benachrichtigungen pro App auf iOS und eine unbegrenzte Anzahl auf Android planen. Dieser Unterschied ist auf architektonische Einschränkungen der Betriebssysteme zurückzuführen.
Beide Plattformen bieten eigene APIs für die Arbeit mit lokalen Benachrichtigungen. Auf iOS ist die zentrale Komponente UNUserNotificationCenter, auf Android — NotificationManager. Trotz unterschiedlicher Schnittstellen ist die Logik dieselbe: Die App erstellt eine Anfrage, registriert sie im System und das OS stellt die Benachrichtigung zum geplanten Zeitpunkt zu.
iOS verwendet UNCalendarNotificationTrigger für Kalenderereignisse, UNTimeIntervalNotificationTrigger für Intervalle und UNLocationNotificationTrigger für den Standort. Android bietet AlarmManager, WorkManager und präzise Planung über setExact.
Seit Android 12 erfordert SCHEDULE_EXACT_ALARM eine spezielle Berechtigung vom Benutzer. Auf iOS wird die Berechtigung einmal über UNUserNotificationCenter.requestAuthorization angefordert, und der Benutzer wählt die Zugriffsstufe: Banner, Töne, Badges.
Lokale Benachrichtigungen werden nach Auslösertyp klassifiziert, nicht nach Inhalt. Jeder Typ bestimmt, wann und unter welchen Bedingungen die Benachrichtigung dem Benutzer angezeigt wird.
Auf iOS und Android werden die Auslösertypen unterschiedlich implementiert, obwohl die logische Klassifizierung gleich ist. iOS verwendet UNCalendarNotificationTrigger für Daten, UNTimeIntervalNotificationTrigger für Intervalle und UNLocationNotificationTrigger für den Standort. Android bietet AlarmManager mit setExact und setRepeating sowie WorkManager für verzögerte Aufgaben.
| Auslösertyp | Beschreibung | Beispiel |
|---|---|---|
| Zeitintervall | Benachrichtigung N Sekunden nach Start | Countdown-Timer |
| Kalenderdatum | Benachrichtigung zu einer bestimmten Uhrzeit und an einem bestimmten Datum | Terminerinnerung |
| Standort | Benachrichtigung beim Betreten/Verlassen einer Region | Erinnerung im Geschäft |
| Sofort | Sofortige Zustellung bei API-Aufruf | Download-Benachrichtigung |
iOS unterstützt auch UNNotificationAttachment — das Anhängen eines Bildes, Audios oder Videos an den Benachrichtigungstext. Android unterstützt benutzerdefinierte Vorlagen mit Schaltflächen und großen Bildern über NotificationCompat.Style.
Die Wahl des Auslösers hängt vom Szenario ab: Kalendererinnerungen funktionieren am besten mit Kalenderauslösern, Standorterinnerungen mit Standort. Intervallauslöser eignen sich für wiederkehrende Ereignisse mit festem Zeitraum.
Auf iOS werden lokale Benachrichtigungen vom System auch bei geschlossener App zugestellt — UNUserNotificationCenter verwaltet die Warteschlange eigenständig. Auf Android hängt die Zustellung vom gewählten Mechanismus ab: AlarmManager wird auch bei ausgeschaltetem Bildschirm ausgelöst, während WorkManager die Energieeinsparung berücksichtigt.
Lokale Benachrichtigungen lösen Aufgaben, bei denen die externe Infrastruktur überflüssig oder nicht verfügbar ist. Hauptszenarien: Erinnerungen, Timer, Onboarding-Tipps und verzögerte Aktionen.
Untersuchungen von Localytics zeigen, dass Apps, die lokale Erinnerungen verwenden, in der ersten Woche nach der Installation 35% mehr Benutzer binden. Dies macht lokale Benachrichtigungen zu einem leistungsstarken Onboarding-Tool.
Es ist wichtig, die Häufigkeit nicht zu missbrauchen — das System gruppiert Benachrichtigungen derselben App und der Benutzer kann alle lokalen Benachrichtigungen deaktivieren, wenn sie lästig werden. Die optimale Häufigkeit beträgt nicht mehr als 2–3 Benachrichtigungen pro Tag für nicht kritische Ereignisse.
Um eine lokale Benachrichtigung auf Android zu planen, verwenden Sie NotificationManager zusammen mit AlarmManager. Auf Android 8+ müssen Sie zuerst einen Benachrichtigungskanal erstellen, sonst wird die Benachrichtigung nicht angezeigt.
val channelId = "reminder_channel"
val notificationId = "task_reminder_42"
val channel = NotificationChannel(
channelId,
"Erinnerungen",
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Kanal für Aufgabenerinnerungen"
}
val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
val intent = Intent(this, ReminderReceiver::class.java).apply {
putExtra("notification_id", notificationId)
putExtra("channel_id", channelId)
}
val pendingIntent = PendingIntent.getBroadcast(
this, notificationId.hashCode(),
intent, PendingIntent.FLAG_UPDATE_CURRENT
)
val alarmManager = getSystemService(AlarmManager::class.java)
alarmManager.setExact(
AlarmManager.RTC_WAKEUP,
triggerTimeMillis,
pendingIntent
)
Überprüfen Sie auf Android 12+ die Berechtigung SCHEDULE_EXACT_ALARM vor dem Aufruf von setExact. Wenn die Berechtigung nicht erteilt wurde — verwenden Sie setWindow, das die Zustellung innerhalb eines Zeitfensters garantiert.
Wenn AlarmManager ausgelöst wird, sendet das System einen Broadcast-Intent, der vom BroadcastReceiver empfangen wird. Darin müssen Sie die Benachrichtigung über NotificationManager erstellen und anzeigen. Stellen Sie sicher, dass PendingIntent FLAG_UPDATE_CURRENT verwendet, sonst verwenden alte Benachrichtigungen bei Datenänderungen weiterhin den veralteten Intent.
Auf iOS werden lokale Benachrichtigungen über UNUserNotificationCenter mit UNMutableNotificationContent und einem der Auslöser erstellt. Vor der Planung müssen Sie die Berechtigung des Benutzers einholen.
import UserNotifications
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
guard granted else { return }
}
let content = UNMutableNotificationContent()
content.title = "Aufgabenerinnerung"
content.body = "Vergessen Sie nicht, den Bericht bis 18:00 Uhr fertigzustellen"
content.sound = .default
content.userInfo = ["task_id": "42"]
let trigger = UNTimeIntervalNotificationTrigger(
timeInterval: 3600,
repeats: false
)
let request = UNNotificationRequest(
identifier: "task_reminder_42",
content: content,
trigger: trigger
)
center.add(request)
iOS unterstützt bis zu 64 gleichzeitige lokale Benachrichtigungsanfragen. Wenn das Limit überschritten wird, lehnt das System neue Anfragen ab, bis die aktiven zugestellt oder abgebrochen wurden. Verwenden Sie getPendingNotificationRequests, um die aktuelle Warteschlange zu überprüfen.
Wenn ein Benutzer mit einer lokalen Benachrichtigung auf iOS interagiert, wird die Methode userNotificationCenter:didReceive response des UNUserNotificationCenterDelegate aufgerufen. Diese Methode liefert die Anfragekennung, actionIdentifier (welche Schaltfläche gedrückt wurde) und benutzerdefinierte userInfo. Dies ermöglicht die Unterscheidung zwischen einem einfachen Öffnen der Benachrichtigung und dem Drücken einer bestimmten Aktionsschaltfläche.
Damit lokale Benachrichtigungen nützlich und nicht nervig sind, befolgen Sie mehrere wichtige Regeln. Erstens: kontrollieren Sie die Häufigkeit — nicht mehr als 2–3 Benachrichtigungen pro Tag für nicht kritische Ereignisse, sonst deaktiviert der Benutzer alle App-Benachrichtigungen.
Zweitens: geben Sie dem Benutzer die Wahl. Fügen Sie in der Oberfläche die Möglichkeit hinzu, bestimmte Arten lokaler Benachrichtigungen zu deaktivieren. Verwenden Sie auf Android einen separaten NotificationChannel mit niedriger Priorität; auf iOS eine separate Kategorie in den App-Einstellungen.
Drittens: kontextuelle Relevanz — die Benachrichtigung sollte erscheinen, wenn der Benutzer sie benötigt. Standortauslöser sind ideal für Erinnerungen in der Nähe des Zuhauses, Kalenderauslöser für Termine, Intervallauslöser für regelmäßige Aktivitäten wie Wassertrinken oder Dehnen. Mischen Sie Typen nicht unnötig.
Viertens: testen Sie auf echten Geräten. Der iOS-Simulator emuliert nicht alle Zustellungsszenarien lokaler Benachrichtigungen, insbesondere im Hintergrund. Verwenden Sie auf Android adb shell dumpsys notification, um die Warteschlange geplanter Benachrichtigungen und deren Parameter zu überprüfen. Fünftens: bieten Sie dem Benutzer immer die Möglichkeit, Benachrichtigungen über die App-Oberfläche zu deaktivieren — dies ist eine verbindliche UX-Anforderung und eine Vorgabe der App Store Review Guidelines.
Häufig gestellte Fragen
Eine lokale Benachrichtigung wird vom Gerät ohne Serverbeteiligung geplant und zugestellt. Eine Push-Benachrichtigung erfordert einen externen Dienst (FCM, APNS) und eine Internetverbindung. Lokale Benachrichtigungen funktionieren offline, Push nur mit Netzwerkzugriff.
iOS beschränkt auf 64 gleichzeitig geplante Anfragen. Android hat keine strenge Grenze, aber über 500 Benachrichtigungen können die Systemleistung beeinträchtigen und die Zustellzeit beeinflussen.
Ja, auf iOS verwenden Sie removePendingNotificationRequests mit der Anfragekennung. Auf Android rufen Sie NotificationManager.cancel auf oder brechen den PendingIntent über AlarmManager ab. Eine eindeutige Kennung ist für den Abbruch erforderlich.
Auf iOS ist die Berechtigung über requestAuthorization obligatorisch. Auf Android 13+ (Tiramisu) ist ebenfalls die Berechtigung POST_NOTIFICATIONS erforderlich. Ältere Android-Versionen benötigen keine explizite Berechtigung für lokale Benachrichtigungen.
Auf iOS erstellen Sie eine UNNotificationAction und fügen sie zu UNNotificationCategory hinzu. Auf Android verwenden Sie NotificationCompat.Builder.addAction mit einem PendingIntent, der auf BroadcastReceiver abzielt. Jede Schaltfläche löst eine separate Aktion in der App aus.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch