Sobes.tech
Middle

Wat is een uitbreiding van de meldingsdienst?

sobes.tech AI

Antwoord van AI

De Notification Service Extension is een kleine uitvoerbare aanvulling die in uw iOS-app is ingebouwd. Hiermee kunt u de inhoud van een externe pushmelding aanpassen voordat deze aan de gebruiker wordt weergegeven.

Belangrijkste functies:

  • Inhoud aanpassen: Wijzig de titel, subtitel, tekst of voeg bijlagen (afbeeldingen, video's) toe aan de melding.
  • Versleutelde inhoud decoderen: Ontsleutel versleutelde gegevens die samen met de melding worden verzonden voordat ze aan de gebruiker worden getoond.
  • Rijke meldingen: In combinatie met de Notification Content Extension kunnen aangepaste interfaces worden gemaakt voor het weergeven van meldingen.

Levenscyclus:

  1. Bij ontvangst van een externe melding met de sleutel mutable-content: 1 start het systeem de uitvoering van de Notification Service Extension.
  2. De methode didReceive(_:withContentHandler:) wordt geïmplementeerd, waarin de melding wordt verwerkt en aangepast.
  3. De gewijzigde inhoud wordt doorgegeven aan de contentHandler.
  4. Het systeem toont de aangepaste melding.

Beperkingen:

  • Kortdurende uitvoering (meestal ongeveer 30 seconden).
  • Beperkte toegang tot systeembronnen.
  • Kan geen langdurige achtergrondtaken uitvoeren.

Voorbeeld van een basisimplementatie:

import UserNotifications

class NotificationService: UNNotificationServiceExtension {

    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        self.contentHandler = contentHandler
        bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)

        if let bestAttemptContent = bestAttemptContent {
            // Pas de inhoud van de melding hier aan...
            bestAttemptContent.title = "\(bestAttemptContent.title ?? "Geen Titel") [aangepast]"

            contentHandler(bestAttemptContent)
        }
    }

    override func serviceExtensionTimeWillExpire() {
        // Wordt net voor het beëindigen van de extensie door het systeem aangeroepen.
        // Gebruik dit als een kans om je "beste poging" tot gewijzigde inhoud te leveren,
        // anders wordt de originele push payload geleverd.
        if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
            contentHandler(bestAttemptContent)
        }
    }

}