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:
- Bij ontvangst van een externe melding met de sleutel
mutable-content: 1start het systeem de uitvoering van de Notification Service Extension. - De methode
didReceive(_:withContentHandler:)wordt geïmplementeerd, waarin de melding wordt verwerkt en aangepast. - De gewijzigde inhoud wordt doorgegeven aan de
contentHandler. - 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)
}
}
}