Middle
Bildirim hizmeti uzantısı nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bildirim Servis Uzantısı (Notification Service Extension), iOS uygulamanıza entegre edilen küçük bir çalıştırılabilir tamamlamadır. Bu, uzak push bildiriminin içeriğinin görünümünü, kullanıcının görüntülemeden önce değiştirmeye olanak tanır.
Ana işlevler:
- İçerik Değişikliği: Bildirimin başlığını, alt başlığını, metnini değiştirme veya ekler (resimler, videolar) ekleme.
- Şifreli İçeriğin Çözülmesi: Bildirimle birlikte gönderilen şifreli verileri, kullanıcının görmeden önce çözme.
- Zengin Bildirimler: Bildirim İçeriği Uzantısı (Notification Content Extension) ile birlikte kullanıldığında, bildirimleri göstermek için özel arayüzler oluşturma.
Yaşam döngüsü:
mutable-content: 1anahtarıyla uzak bildirim alındığında, sistem bildirim servisi uzantısının başlatılmasını sağlar.didReceive(_:withContentHandler:)yöntemi uygulanır ve burada bildirim işlenir ve değiştirilir.- Değiştirilmiş içerik,
contentHandlertamamlayıcı işlevine iletilir. - Sistem, değiştirilmiş bildirimi gösterir.
Kısıtlamalar:
- Kısa süreli yürütme (genellikle yaklaşık 30 saniye).
- Sistem kaynaklarına sınırlı erişim.
- Uzun süreli arka plan görevleri yapamaz.
Temel bir uygulama örneği:
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 {
// Bildirim içeriğini burada değiştir...
bestAttemptContent.title = "\(bestAttemptContent.title ?? "Başlıksız") [değiştirildi]"
contentHandler(bestAttemptContent)
}
}
override func serviceExtensionTimeWillExpire() {
// Sistem uzantı sona ermeden hemen önce çağrılır.
// Bunu, "en iyi deneme" içeriğinizi teslim etmek için bir fırsat olarak kullanın,
// aksi takdirde orijinal push yükü teslim edilir.
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}