Sobes.tech
Middle

Bildiriş xidməti uzantısı nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Bildirim Xidməti Genişləndirilməsi (Notification Service Extension) iOS tətbiqinizə daxil edilmiş kiçik bir icra edilə bilən əlavəsidir. Bu, uzaq push bildirişinin məzmununun görünüşünü istifadəçiyə göstərilmədən əvvəl dəyişdirməyə imkan verir.

Əsas funksiyalar:

  • Məzmunun dəyişdirilməsi: Başlıq, alt başlıq, mətn və ya əlavə (şəkillər, videolar) əlavə etmək.
  • Şifrələnmiş Məzmunun deşifrə edilməsi: Bildirişlə birlikdə göndərilən şifrələnmiş məlumatları istifadəçiyə göstərilmədən əvvəl deşifrə etmək.
  • Zəngin Bildirişlər: Bildiriş Məzmunu Genişləndirilməsi (Notification Content Extension) ilə birlikdə istifadə edildikdə, bildirişlərin göstərilməsi üçün xüsusi interfeyslər yaratmağa imkan verir.

Həyat dövrü:

  1. mutable-content: 1 açarı ilə uzaq bildiriş alınanda, sistem bildiriş xidməti genişləndirilməsinin işə salınmasını təmin edir.
  2. didReceive(_:withContentHandler:) metodu tətbiq edilir və burada bildiriş işlənir və dəyişdirilir.
  3. Dəyişdirilmiş məzmun contentHandler tamamlayıcısına ötürülür.
  4. Sistem dəyişdirilmiş bildirişi göstərir.

Məhdudiyyətlər:

  • Qısa müddətli icra (adətən təxminən 30 saniyə).
  • Sistem resurslarına məhdud giriş.
  • Uzunmüddətli fon tapşırıqları yerinə yetirə bilməz.

Əsas tətbiq nümunəsi:

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 {
            // Bildiriş məzmununu burada dəyişdirin...
            bestAttemptContent.title = "\(bestAttemptContent.title ?? "Başlıqsız") [dəyişdirildi]"

            contentHandler(bestAttemptContent)
        }
    }

    override func serviceExtensionTimeWillExpire() {
        // Sistem genişləndirilməsi sona çatmadan əvvəl çağırılır.
        // Bu fürsətdən istifadə edərək, "ən yaxşı cəhd" ilə dəyişdirilmiş məzmunu təqdim edin,
        // əks halda, orijinal push yükü təqdim olunacaq.
        if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
            contentHandler(bestAttemptContent)
        }
    }

}