Middle
Kas ir paziņojumu pakalpojuma paplašinājums?
sobes.tech AI
Atbilde no AI
Notification Service Extension ir neliels izpildāms papildinājums, kas ir iebūvēts jūsu iOS lietotnē. Tas ļauj mainīt attālinātā push paziņojuma satura izskatu pirms tā parādīšanas lietotājam.
Galvenās funkcijas:
- Satura modifikācija: Paziņojuma virsraksta, apakšvirsraksta, teksta maiņa vai pielikumu (attēli, video) pievienošana.
- Šifrēta satura dešifrēšana: Šifrētu datu dekodēšana, kas nosūtīti kopā ar paziņojumu, pirms to parādīšanas lietotājam.
- Bagātīgas paziņojumi: Kombinācijā ar Notification Content Extension, tas ļauj izveidot pielāgotus interfeisus paziņojumu attēlošanai.
Dzīves cikls:
- Kad saņemts attālināts paziņojums ar atslēgu
mutable-content: 1, sistēma sāk Notification Service Extension palaišanu. - Izsauc metodi
didReceive(_:withContentHandler:), kurā notiek paziņojuma apstrāde un modifikācija. - Mainītais saturs tiek nodots
contentHandler. - Sistēma parāda modifikēto paziņojumu.
Ierobežojumi:
- Īslaicīga izpilde (parasti ap 30 sekundēm).
- Ierobežota piekļuve sistēmas resursiem.
- Nevar veikt ilgstošas fonu uzdevumus.
Pamata realizācijas piemērs:
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 {
// Modificējiet paziņojuma saturu šeit...
bestAttemptContent.title = "\(bestAttemptContent.title ?? "Bez nosaukuma") [pakeits]"
contentHandler(bestAttemptContent)
}
}
override func serviceExtensionTimeWillExpire() {
// Izsauc tieši pirms sistēma pārtrauks papildinājuma darbību.
// Izmantojiet to kā iespēju piegādāt savu "labāko mēģinājumu" modificētajā saturā,
// citādi tiks piegādāts oriģinālais push payload.
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}