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

}