Middle
Хабарландыру кызматын кеңейтүү деген эмне?
sobes.tech AI
AIден жооп
Notification Service Extension — бул сиздин iOS тиркемеңизге орнотулган кичинекей ишке ашыруу кошумча. Ал алыстагы push билдирүүнүн мазмунунун көрүнүшүн өзгөртүүгө мүмкүндүк берет, аны колдонуучу көргүсү келгенге чейин.
Негизги функциялары:
- Мазмунду өзгөртүү: Билдирүүнүн башын, астын, текстин өзгөртүү же тиркемелерди (сүрөттөр, видеолор) кошуу.
- Шифрленген мазмунду декоддоо: Билдирүү менен жөнөтүлгөн шифрленген маалыматтарды декоддоо, алардын көрсөтүлүшүнөн мурун.
- Бай мазмундагы билдирүүлөр: Notification Content Extension менен бирге колдонулганда, билдирүүлөрдү көрсөтүү үчүн ыңгайлаштырылган интерфейстерди түзүүгө мүмкүндүк берет.
Өмүр цикли:
- Алыстагы билдирүү
mutable-content: 1ачкыч менен келгенде, системасы Notification Service Extension иштетүүнү баштайт. didReceive(_:withContentHandler:)методу ишке ашырылат, анда билдирүү иштетилет жана өзгөртүлөт.- Өзгөртүлгөн мазмун
contentHandlerаркылуу өткөрүлөт. - Система өзгөртүлгөн билдирүүнү көрсөтөт.
Чектөөлөр:
- Кыска мөөнөттүү иштетүү (жалпы 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)
}
}
}