Sobes.tech
Middle

Хабарландыру кызматын кеңейтүү деген эмне?

sobes.tech AI

AIден жооп

Notification Service Extension — бул сиздин iOS тиркемеңизге орнотулган кичинекей ишке ашыруу кошумча. Ал алыстагы push билдирүүнүн мазмунунун көрүнүшүн өзгөртүүгө мүмкүндүк берет, аны колдонуучу көргүсү келгенге чейин.

Негизги функциялары:

  • Мазмунду өзгөртүү: Билдирүүнүн башын, астын, текстин өзгөртүү же тиркемелерди (сүрөттөр, видеолор) кошуу.
  • Шифрленген мазмунду декоддоо: Билдирүү менен жөнөтүлгөн шифрленген маалыматтарды декоддоо, алардын көрсөтүлүшүнөн мурун.
  • Бай мазмундагы билдирүүлөр: Notification Content Extension менен бирге колдонулганда, билдирүүлөрдү көрсөтүү үчүн ыңгайлаштырылган интерфейстерди түзүүгө мүмкүндүк берет.

Өмүр цикли:

  1. Алыстагы билдирүү mutable-content: 1 ачкыч менен келгенде, системасы Notification Service Extension иштетүүнү баштайт.
  2. didReceive(_:withContentHandler:) методу ишке ашырылат, анда билдирүү иштетилет жана өзгөртүлөт.
  3. Өзгөртүлгөн мазмун contentHandler аркылуу өткөрүлөт.
  4. Система өзгөртүлгөн билдирүүнү көрсөтөт.

Чектөөлөр:

  • Кыска мөөнөттүү иштетүү (жалпы 30 секунд чамалуу).
  • Системдик ресурстарга чектелген кирүү.
  • Узак мөөнөттүү фондук тапшырмаларды аткара албайт.

Негизги ишке ашыруу мисалы:

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 {
            // Билдирүүнүн мазмунун ушул жерден өзгөртүңүз...
            bestAttemptContent.title = "\(bestAttemptContent.title ?? "Аты жок") [өзгөртүлгөн]"

            contentHandler(bestAttemptContent)
        }
    }

    override func serviceExtensionTimeWillExpire() {
        // Бул кеңейтүү системанын тарабынан жабылууга жакындап калганда чакырылат.
        // Бул мүмкүнчүлүктөн пайдаланып, "эң жакшы аракет" менен өзгөртүлгөн мазмунда жеткирүү үчүн колдонушуңуз керек,
        // башкача болсо, оригиналдуу push жүктөмү жеткирилет.
        if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
            contentHandler(bestAttemptContent)
        }
    }

}