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ü:
mutable-content: 1açarı ilə uzaq bildiriş alınanda, sistem bildiriş xidməti genişləndirilməsinin işə salınmasını təmin edir.didReceive(_:withContentHandler:)metodu tətbiq edilir və burada bildiriş işlənir və dəyişdirilir.- Dəyişdirilmiş məzmun
contentHandlertamamlayıcısına ötürülür. - 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)
}
}
}