Middle
Mis on teavitusteenuse laiendus?
sobes.tech AI
Vastus AI-lt
Notification Service Extension on väike täidetav lisand, mis on sisseehitatud teie iOS-rakendusse. See võimaldab muuta kaugpush-teate sisu välimust enne selle kuvamist kasutajale.
Peamised funktsioonid:
- Sisu muutmine: Teate pealkirja, alapealkirja, teksti muutmine või manuste (pildid, videod) lisamine.
- Krüpteeritud sisu dešifreerimine: Krüpteeritud andmete dekodeerimine, mis saadetakse koos teatega, enne nende kuvamist kasutajale.
- Rikkad teated: Koos Notification Content Extension'iga võimaldab luua kohandatud liideseid teavituste kuvamiseks.
Elutsükkel:
- Kui saadakse kaugteade võtmega
mutable-content: 1, käivitub süsteem Notification Service Extension. - Käivitatakse meetod
didReceive(_:withContentHandler:), kus teade töödeldakse ja muudetakse. - Muudetud sisu edastatakse
contentHandler-ile. - Süsteem kuvab muudetud teate.
Piirangud:
- Lühike täitmise aeg (tavaliselt umbes 30 sekundit).
- Piiratud juurdepääs süsteemi ressurssidele.
- Ei saa täita pikki taustatöid.
Põhiväljund:
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 {
// Muutke teate sisu siin...
bestAttemptContent.title = "\(bestAttemptContent.title ?? "Ilma pealkirjata") [muudetud]"
contentHandler(bestAttemptContent)
}
}
override func serviceExtensionTimeWillExpire() {
// Kutsutakse välja just enne, kui süsteem lõpetab laienduse.
// Kasutage seda võimalust, et edastada oma "parim katse" muudetud sisuga,
// vastasel juhul edastatakse algne push-payload.
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}