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 payload.
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}