Sobes.tech
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:

  1. Kui saadakse kaugteade võtmega mutable-content: 1, käivitub süsteem Notification Service Extension.
  2. Käivitatakse meetod didReceive(_:withContentHandler:), kus teade töödeldakse ja muudetakse.
  3. Muudetud sisu edastatakse contentHandler-ile.
  4. 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)
        }
    }

}