Notification-Payloads verarbeiten
Reagieren Sie auf Benachrichtigungen im Vorder- und Hintergrund.
Notification-Payloads verarbeiten ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Die Payload-Struktur
Eine Remote-Benachrichtigung ist ein JSON-Dictionary, das Ihr Server an APNs sendet. Der reservierte Schlüssel aps enthält die für den Benutzer sichtbaren Inhalte – Alert, Sound und Badge –, während gleichrangige Schlüssel Ihre benutzerdefinierten Daten enthalten, etwa eine Element-ID zum Öffnen.
// Example payload JSON:
// {
// "aps": { "alert": { "title": "Hi", "body": "..." },
// "sound": "default", "badge": 1 },
// "itemId": "42"
// }Das aps-Dictionary
Innerhalb von aps kann alert entweder eine Zeichenkette oder ein Objekt mit title/body/subtitle sein. Auch sound, badge und Flags wie content-available und mutable-content befinden sich hier. Alles außerhalb von aps definieren Sie selbst.
// aps keys:
// alert: { title, subtitle, body }
// sound: "default" or critical sound object
// badge: Int
// content-available: 1 (silent / background)
// mutable-content: 1 (allow modification)Zustellung im Vordergrund
Standardmäßig wird eine Benachrichtigung unterdrückt, die eintrifft, während sich Ihre App im Vordergrund befindet. Damit sie trotzdem angezeigt wird, implementieren Sie willPresent im Delegate und geben Sie die gewünschten Anzeigeoptionen zurück, etwa ein Banner und einen Ton.
import UserNotifications
func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification
) async -> UNNotificationPresentationOptions {
return [.banner, .sound, .badge]
}Auf Tippen reagieren
Wenn der Benutzer auf eine Benachrichtigung tippt, unabhängig davon, ob die App im Hintergrund oder beendet war, wird didReceive response des Delegates aufgerufen. Hier lesen Sie die Payload aus und navigieren zum richtigen Bildschirm.
import UserNotifications
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse
) async {
let info = response.notification.request
.content.userInfo
if let id = info["itemId"] as? String {
print("open item", id)
}
}userInfo lesen
Die vollständige Payload einschließlich Ihrer benutzerdefinierten Schlüssel wird als content.userInfo bereitgestellt – ein [AnyHashable: Any]-Dictionary. Wandeln Sie jeden Wert sorgfältig um; verwenden Sie niemals Force-Unwrapping, da eine fehlerhafte Payload die App nicht zum Absturz bringen darf.
import UserNotifications
func route(_ userInfo: [AnyHashable: Any]) {
guard let screen = userInfo["screen"] as? String
else { return }
switch screen {
case "profile": print("go to profile")
case "cart": print("go to cart")
default: break
}
}Stille (Hintergrund-)Benachrichtigungen
Wenn Sie content-available: 1 setzen und einen Alert weglassen, erzeugen Sie einen stillen Push, der die App im Hintergrund zur Datenabfrage aktiviert, ohne eine Benutzeroberfläche anzuzeigen. Diese Benachrichtigungen werden vom System gedrosselt und erfordern den Hintergrundmodus Remote notifications.
// Silent payload — no alert, just a wake-up:
// { "aps": { "content-available": 1 }, "sync": true }
let silent = "content-available wakes app quietly"
_ = silentHandler für Hintergrundabrufe
Ein stiller Push trifft in der asynchronen Methode didReceiveRemoteNotification des App-Delegates ein. Sie führen Ihren Abruf durch und geben ein UIBackgroundFetchResult zurück, damit das System weiß, ob neue Daten eingetroffen sind, und künftige Aktivierungen entsprechend einplanen kann.
import UIKit
func application(
_ app: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any]
) async -> UIBackgroundFetchResult {
// fetch fresh data here
return .newData
}Mutable Content und Service Extensions
Mit mutable-content: 1 kann eine Notification Service Extension den Push vor der Anzeige abfangen – etwa um den Inhalt zu entschlüsseln, ein Bild als Anhang herunterzuladen oder den Titel umzuschreiben. Die Extension hat nur ein kurzes Zeitbudget für ihre Arbeit.
// Service extension entry point (UNNotificationServiceExtension):
// override didReceive(_:withContentHandler:)
// modify bestAttemptContent, then call contentHandler
let mutable = "mutable-content enables interception"
_ = mutableDen Alert lokalisieren
Um Texte serverseitig zu lokalisieren, senden Sie title-loc-key und loc-key mit Verweisen auf Schlüssel in den Localizable-Strings Ihrer App sowie loc-args für Ersetzungen. Das Gerät rendert sie in der Sprache des Benutzers, ohne dass Sie vorübersetzte Texte senden müssen.
// Localized alert payload:
// "alert": {
// "loc-key": "NEW_MESSAGE",
// "loc-args": ["Ada"]
// }
let localized = "loc-key resolves on device"
_ = localizedDas Badge aktualisieren
Der Wert badge legt die Zahl am App-Symbol fest. Mit badge: 0 löschen Sie sie. Sie können den Wert nach dem Lesen von Inhalten auch per Code über setBadgeCount setzen, damit das Badge mit dem Status ungelesener Inhalte übereinstimmt.
import UserNotifications
func clearBadge() async {
try? await UNUserNotificationCenter.current()
.setBadgeCount(0)
}Ein robuster Handler
Fügen Sie die einzelnen Teile zusammen: Zeigen Sie Benachrichtigungen im Vordergrund an, navigieren Sie nach einem Tippen und prüfen Sie jede Typumwandlung. Der Handler stürzt bei unerwarteten Payloads niemals ab und liest immer alle verfügbaren Daten aus.
import UserNotifications
func handleTap(_ response: UNNotificationResponse) {
let info = response.notification.request
.content.userInfo
guard let id = info["itemId"] as? String else {
print("no item id; open home")
return
}
print("navigate to item", id)
}Kurzer Test
Rufen Sie sich ins Gedächtnis, wie Sie auf das Tippen auf eine Benachrichtigung reagieren.
Zusammenfassung
Sie haben gelernt, Payloads zu verarbeiten:
- Das
aps-Dictionary enthält die für den Benutzer sichtbaren Inhalte; gleichrangige Schlüssel enthalten Ihre Daten, die Sie überuserInfoauslesen. - Überschreiben Sie
willPresent, um Benachrichtigungen im Vordergrund anzuzeigen, unddidReceive response, um auf Tippen zu reagieren. content-available: 1steuert stille Hintergrundabrufe, die einUIBackgroundFetchResultzurückgeben.mutable-contentaktiviert eine Service Extension;loc-keylokalisiert Texte auf dem Gerät.
Häufig gestellte Fragen
Ist die Lektion „Notification-Payloads verarbeiten“ kostenlos?
Ja — der vollständige Text von „Notification-Payloads verarbeiten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Notification-Payloads verarbeiten“?
Reagieren Sie auf Benachrichtigungen im Vorder- und Hintergrund. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Notification-Payloads verarbeiten“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Für Push-Benachrichtigungen registrieren
- Notification-Payloads verarbeiten
- Hintergrundaufgaben und Aktualisierung
- Benachrichtigungsaktionen und -kategorien