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() {
// Կոչվում է հենց այն ժամանակ, երբ համակարգը ավարտում է ընդարձակումն:
// Օգտագործեք սա՝ ձեր "ամենալավ փորձը" տրամադրելու համար:
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}