Notificatiepayloads verwerken
Reageer op notificaties op de voorgrond en de achtergrond.
Notificatiepayloads verwerken is een gratis Swift Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Swift Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Swift Academy bevat in totaal 4 lessen.
De payloadstructuur
Een pushmelding op afstand is een JSON-woordenboek dat je server naar APNs stuurt. De gereserveerde sleutel aps bevat de voor de gebruiker zichtbare inhoud — alert, sound en badge — terwijl eventuele sleutels op hetzelfde niveau je aangepaste gegevens bevatten, zoals een item-id om te openen.
// Example payload JSON:
// {
// "aps": { "alert": { "title": "Hi", "body": "..." },
// "sound": "default", "badge": 1 },
// "itemId": "42"
// }Het aps-woordenboek
Binnen aps kan alert een tekenreeks zijn of een object met title, body en subtitle. Ook sound, badge en vlaggen zoals content-available en mutable-content staan hier. Alles buiten aps mag je zelf definiëren.
// aps keys:
// alert: { title, subtitle, body }
// sound: "default" or critical sound object
// badge: Int
// content-available: 1 (silent / background)
// mutable-content: 1 (allow modification)Meldingen op de voorgrond
Standaard wordt een melding die binnenkomt terwijl je app op de voorgrond staat, onderdrukt. Om haar toch te tonen, implementeer je de willPresent van de delegate en geef je de gewenste presentatieopties terug, zoals een banner en geluid.
import UserNotifications
func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification
) async -> UNNotificationPresentationOptions {
return [.banner, .sound, .badge]
}Reageren op een tik
Wanneer de gebruiker op een melding tikt (ongeacht of de app op de achtergrond stond of was beëindigd), wordt didReceive response van de delegate uitgevoerd. Hier lees je de payload en navigeer je naar het juiste scherm.
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 lezen
De volledige payload, inclusief je aangepaste sleutels, is beschikbaar als content.userInfo — een woordenboek van het type [AnyHashable: Any]. Zet elke waarde zorgvuldig om; unwrap nooit geforceerd, want een ongeldige payload mag de app niet laten vastlopen.
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 meldingen (op de achtergrond)
Als je content-available: 1 instelt en alert weglaat, krijg je een stille pushmelding die de app op de achtergrond wekt om gegevens op te halen, zonder gebruikersinterface. Deze meldingen worden door het systeem afgeremd en vereisen de achtergrondmodus voor meldingen op afstand.
// Silent payload — no alert, just a wake-up:
// { "aps": { "content-available": 1 }, "sync": true }
let silent = "content-available wakes app quietly"
_ = silentAfhandelaar voor ophalen op de achtergrond
Een stille pushmelding komt binnen in de app-delegate via de asynchrone methode didReceiveRemoteNotification. Je haalt gegevens op en retourneert een UIBackgroundFetchResult, zodat het systeem weet of er nieuwe gegevens zijn binnengekomen en toekomstige ontwakingen kan inplannen.
import UIKit
func application(
_ app: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable: Any]
) async -> UIBackgroundFetchResult {
// fetch fresh data here
return .newData
}Wijzigbare inhoud en service-extensies
Met mutable-content: 1 kan een Notification Service Extension de push onderscheppen voordat die wordt weergegeven — om de inhoud te ontsleutelen, een afbeeldingsbijlage te downloaden of de titel te herschrijven. De extensie heeft weinig tijd om klaar te zijn.
// Service extension entry point (UNNotificationServiceExtension):
// override didReceive(_:withContentHandler:)
// modify bestAttemptContent, then call contentHandler
let mutable = "mutable-content enables interception"
_ = mutableDe melding lokaliseren
Om tekst aan serverzijde te lokaliseren, stuur je title-loc-key en loc-key mee, die verwijzen naar sleutels in de lokalisatietekenreeksen van je app, plus loc-args voor vervangingen. Het apparaat geeft ze weer in de taal van de gebruiker zonder dat je vooraf vertaalde tekst hoeft te versturen.
// Localized alert payload:
// "alert": {
// "loc-key": "NEW_MESSAGE",
// "loc-args": ["Ada"]
// }
let localized = "loc-key resolves on device"
_ = localizedDe badge bijwerken
De waarde van badge stelt het getal op het appicoon in. Met badge: 0 wis je het. Je kunt het ook in code instellen via setBadgeCount nadat de gebruiker inhoud heeft gelezen, zodat de badge overeenkomt met de status van ongelezen inhoud.
import UserNotifications
func clearBadge() async {
try? await UNUserNotificationCenter.current()
.setBadgeCount(0)
}Een robuuste afhandelaar
Combineer de onderdelen: toon meldingen op de voorgrond, routeer bij een tik en valideer elke typeconversie. De afhandelaar loopt nooit vast door onverwachte payloads en haalt er altijd uit wat mogelijk is.
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)
}Korte controle
Haal je voor de geest hoe je op een tik op een melding reageert.
Samenvatting
Je hebt geleerd hoe je payloads afhandelt:
- Het
aps-woordenboek bevat de voor de gebruiker zichtbare inhoud; sleutels op hetzelfde niveau bevatten je gegevens, die je viauserInfoleest. - Overschrijf
willPresentom meldingen op de voorgrond te tonen en gebruikdidReceive responseom tikken af te handelen. content-available: 1zorgt voor stille ophaalacties op de achtergrond die eenUIBackgroundFetchResultteruggeven.- Met
mutable-contentschakel je een service-extensie in;loc-keylokaliseert tekst op het apparaat.
Leer Swift met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 122
- Lessen
- 409
Veelgestelde vragen
Is de les “Notificatiepayloads verwerken” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Swift Academy, waaronder “Notificatiepayloads verwerken”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Swift Academy bevat in totaal 4 lessen.
Wat leer ik in “Notificatiepayloads verwerken”?
Reageer op notificaties op de voorgrond en de achtergrond. Je oefent met Swift Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Swift Academy te beginnen?
Ervaring vooraf is niet nodig. Swift Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Notificatiepayloads verwerken”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Swift Academy?
Ja. Elke les over Swift Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Registreren voor pushnotificaties
- Notificatiepayloads verwerken
- Achtergrondtaken en verversen
- Notificatieacties en -categorieën