Swift Academy · Les

Notificatiepayloads verwerken

Reageer op notificaties op de voorgrond en de achtergrond.

Les 2 van 413 stappen

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"
_ = silent

Afhandelaar 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"
_ = mutable

De 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"
_ = localized

De 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 via userInfo leest.
  • Overschrijf willPresent om meldingen op de voorgrond te tonen en gebruik didReceive response om tikken af te handelen.
  • content-available: 1 zorgt voor stille ophaalacties op de achtergrond die een UIBackgroundFetchResult teruggeven.
  • Met mutable-content schakel je een service-extensie in; loc-key lokaliseert tekst op het apparaat.
Gratis beginnen

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

  1. Registreren voor pushnotificaties
  2. Notificatiepayloads verwerken
  3. Achtergrondtaken en verversen
  4. Notificatieacties en -categorieën
← Terug naar Swift Academy