Notification Content Extension — nedir ve iOS için nasıl özel arayüz oluşturulur

Yazar: IT Sectr Yayınlanma: 2026-03-21 Okuma süresi: 8 dk

Notification Content Extension, standart push bildirimi arayüzünü özel bir UIView ile değiştirmeye olanak tanıyan bir iOS uzantısıdır. Geliştirici, içerik görüntüleme üzerinde tam kontrole sahiptir: görseller, videolar, animasyonlar, özel yazı tipleri ve etkileşimli öğeler. Apple Developer, 2025'e göre, Notification Content Extension, bildirimin sınırlı alanında herhangi bir UIKit arayüzünü destekler.

Önemli Noktalar

  • Notification Content Extension — özel push bildirimi UI'sı için iOS uzantısı.
  • Uzantı, zorunlu didReceive yöntemiyle UNNotificationContentExtension protokolünü uygular.
  • Özel arayüz Storyboard'da oluşturulur ve herhangi bir UIKit bileşenini içerebilir.
  • Uzantının maksimum boyutu 50 MB'dır ve sıkıştırılmış halde 12 MB'ı geçmemelidir.
  • Uzantı, belirtilen categoryIdentifier'a sahip bildirimler için etkinleştirilir.

Notification Content Extension Nedir

Notification Content Extension, push bildirimlerinin standart görüntüleme şablonunu özel bir UIView ile değiştiren bir iOS uygulama uzantısıdır. İçeriğin başlık, alt başlık ve gövdeyle sınırlı olduğu normal bir bildirimin aksine, uzantı herhangi bir UIKit arayüzünü görüntüleyebilir: koordinatlı harita, grafik, resim galerisi veya giriş formu.

Nasıl çalışır

iOS belirtilen categoryIdentifier ile bir push bildirimi aldığında, sistem bu kategori için kayıtlı bir uzantı olup olmadığını kontrol eder. Varsa — sistem uzantıyı ayrı bir süreçte başlatır ve bildirim içeriğini ona iletir. Uzantı, standart arayüz yerine kendi arayüzünü gösterir. Kullanıcı, ana uygulamayı açmadan özel arayüzle etkileşime girer.

Notification Service Extension'dan Farkı

Notification Content Extension'ı Notification Service Extension ile karıştırmamak önemlidir. Service Extension, bildirim görüntülenmeden önce içeriği işler (ekleri indirme, şifre çözme). Content Extension, hazır içeriği aldıktan sonra arayüzü değiştirir. Her iki uzantı birlikte çalışabilir: Service Extension verileri hazırlar, Content Extension bunları görüntüler.

ÖzellikContent ExtensionService Extension
AmaçÖzel bildirim UI'ıGörüntüleme öncesi içerik değişikliği
Çalışma süresiKullanıcı bildirimi gördüğü süreceArka planda 30 saniyeye kadar
ArayüzTam UIKit UIViewArayüz yok
APIUNNotificationContentExtensionUNNotificationServiceExtension

Uzantının Sınırlamaları

Notification Content Extension, sınırlı kaynaklarla izole bir süreçte çalışır. Uzantının, App Group dışında NSUserDefaults aracılığıyla ana uygulama deposuna erişimi yoktur. Uzantının boyutu açılmış halde 50 MB ile sınırlıdır. İçerik görüntüleme süresi de sınırlıdır — uzantı makul bir sürede güncellemeyi tamamlamazsa, sistem onu sonlandırır.

Xcode'da Notification Content Extension Oluşturma

Xcode'da uzantı oluşturmak için Notification Content Extension türünde yeni bir target eklemek gerekir. Xcode, UIViewController'dan miras alan ve UNNotificationContentExtension uygulayan bir denetleyiciyle birlikte MainInterface.storyboard'u otomatik olarak oluşturur.

Target uzantısı ekleme

Xcode'da File → New → Target → Notification Content Extension'ı seçin. Uzantının adını, dilini (Swift veya Objective-C) belirtin ve projenin aynı geliştirici ekibine bağlı olduğundan emin olun. Target oluşturulduktan sonra üç dosya içeren bir klasör görünecektir: MainInterface.storyboard, Info.plist ve denetleyici dosyası.

Info.plist yapılandırması

Uzantının Info.plist'inde, UNNotificationExtensionCategory anahtarıyla NSExtensionAttributes dizisinin belirtilmesi zorunludur. Bu dizi, uzantının etkinleştirileceği bildirim kategorilerinin tanımlayıcılarını içerir. İsteğe bağlı UNNotificationExtensionInitialContentSizeRatio anahtarı, doğru konumlandırma için özel arayüzün başlangıç en-boy oranını belirler.

Uzantı klasör mimarisi

Target uzantısında temiz bir mimari korunması önerilir: denetleyiciler için ayrı klasör, özel View'ler için ayrı klasör. Uzantı ayrı bir ikili dosya olduğundan, ana uygulamanın koduna doğrudan erişilemez. Kod paylaşımı için ayrı bir framework oluşturun veya veriler için App Group kullanın.

UNNotificationContentExtension Protokolünü Uygulama

UNNotificationContentExtension, Notification Content Extension'daki denetleyicinin uygulaması gereken protokoldür. Zorunlu tek yöntem, bildirim alındığında çağrılan didReceive(_:with:)'dir. Denetleyici, bildirimi ve verilerle güncellenmesi gereken hazır görünüm denetleyicisini alır.

Denetleyicinin temel uygulaması

Uzantı denetleyicisi UIViewController'dan miras almalı ve UNNotificationContentExtension'ı uygulamalıdır. Storyboard veya xib bu denetleyiciye bağlanır. Bildirim alındığında didReceive yöntemi içeriği iletir ve denetleyici görünümlerini günceller.

swift
import UIKit
import UserNotifications
import UserNotificationsUI

class CustomNotificationViewController: UIViewController {

    @IBOutlet var titleLabel: UILabel!
    @IBOutlet var customImageView: UIImageView!

    func didReceive(
        notification: UNNotification
    ) {
        let content = notification.request.content
        titleLabel.text = content.title
        loadAttachment(content.attachments.first)
    }

    private func loadAttachment(attachment: UNNotificationAttachment?) {
        guard let url = attachment?.URL else { return }
        if let image = UIImage(contentsOfFile: url.path) {
            customImageView.image = image
        }
    }
}

extension CustomNotificationViewController: UNNotificationContentExtension {
    func didReceive(
        notification: UNNotification
    ) {
        didReceive(notification: notification)
    }
}

Arayüz boyutunu kontrol etme

Sistem, Info.plist'teki UNNotificationExtensionInitialContentSizeRatio anahtarına ve mevcut içeriğe göre özel arayüzün boyutunu belirler. Minimum başlangıç boyutu için bu anahtarın 0,1 olarak ayarlanması ve içerik yüklendikten sonra preferredContentSize aracılığıyla boyutun değiştirilmesi önerilir.

Arayüz Özelleştirme ve Etkileşim

Notification Content Extension, arayüz oluşturmada tam özgürlük sağlar. UITableView, MKMapView, WKWebView, UIStackView gibi herhangi bir UIKit bileşeni kullanılabilir. Ancak, bildirimin sınırlı alanını dikkate almak ve performansı optimize etmek önemlidir.

Bildirime harita ekleme

Popüler senaryolardan biri, konum içeren bir harita görüntülemektir. Bunun için uzantının Storyboard'una MKMapView eklenir ve denetleyici bildirim içeriğinden koordinatları iletir. Uzantının target'ına MapKit eklemeyi unutmayın. Harita kullanırken uzantının bellek sınırını göz önünde bulundurun — karmaşık döşemelerin yüklenmesi mevcut kaynakları aşabilir.

Animasyonlar ve geçişler

Notification Content Extension, yeniden boyutlandırma, taşıma ve öğelerin şeffaflığı dahil olmak üzere UIView animasyonlarını destekler. Bildirimin genişletilmiş moduna girerken, içerik görünüm animasyonu başlatılabilir. Animasyonlar kısa olmalı (0,5 saniyeye kadar) ve kullanıcının bildirimle etkileşimini engellememelidir. Sonsuz animasyonlardan kaçının — pil tüketir ve performansı düşürür.

Özel arayüzde dokunma işleme

Uzantı tam bir UIViewController olduğundan, jestler ve dokunma işleyicileri ekleyebilirsiniz. UIKit jestleri (UITapGestureRecognizer, UIButton) standart şekilde çalışır. Uygulama açılmasını gerektiren eylemler için uzantı temsilcisini veya userNotificationCenter'ı kullanın. Etkileşimli öğeler, sınırlı alanda rahat dokunma için yeterince büyük olmalıdır — Apple tavsiyelerine göre minimum dokunma hedefi boyutu 44x44 noktadır.

Medya ve Eklerle Çalışma

Medya içeriği, Notification Content Extension'ın temel özelliğidir. Bildirim, özel arayüzde görüntülenen resimler, GIF'ler, ses ve video içerebilir. Ekler, sunucu tarafından yük aracılığıyla veya Notification Service Extension tarafından indirme sonrasında eklenebilen UNNotificationAttachment aracılığıyla iletilir. JPEG, PNG, MPEG-4 ve MP3 formatları desteklenir.

Uzantıda medya görüntüleme

Bir resmi görüntülemek için, bildirim içeriğinden UNNotificationAttachment'ı almak ve yerel URL'den yüklemek yeterlidir. Uzantının yalnızca yerel dosyalara erişimi olduğunu unutmayın — uzak kaynaklar önceden Service Extension tarafından indirilmelidir. Maksimum boyut — iOS 15+'ta 50 MB, sonraki güncellemelerde sınır değişir. Birden fazla resmi desteklemek için farklı tanımlayıcılara sahip UNNotificationAttachment kullanın ve bunları UIPageViewController aracılığıyla görüntüleyin.

Resimleri yükleme ve görüntüleme

Özel arayüzde bir resmi görüntülemek için uzantı, bildirim içeriğinden UNNotificationAttachment'ı alır ve yerel URL'den yükler. Ek, önceden Notification Service Extension tarafından indirilmiş olmalıdır — Content Extension'ın ağ erişimi yoktur. Maksimum medya eki boyutu — iOS 15+'ta 50 MB, önceki sürümlerde sınır 10 MB idi. Uzantı, ekin yokluğunu doğru şekilde işlemeli ve yedek arayüz görüntülemelidir. Düşük çözünürlüklü resimleri önceden yüklemek için, Service Extension tarafından eklemeden önce oluşturulan küçük resim sürümlerini kullanın.

Bildirimde video oynatma

iOS, AVPlayerLayer aracılığıyla Notification Content Extension'da video oynatmayı destekler. Uzantı, bildirim içinde kontrollü bir video oynatıcı görüntüleyebilir. Bu, özellikle gözetim uygulamaları, akış veya içerik önizleme için kullanışlıdır. Kullanıcının bu bildirimde medya içeriği bekliyorsa, otomatik oynatma sessiz olarak izin verilir. Video oynatıcıyı uygularken kontrol öğeleri ekleyin: oynat/duraklat, ilerleme çubuğu ve kapatma düğmesi. Videonun otomatik olarak sesle başlamadığından emin olun — bu, Apple'ın kullanıcı deneyimi önerilerini ihlal eder. Birden fazla resimden oluşan slayt gösterisi için, sayfa çevirme geçiş seçeneğiyle UIView.transition aracılığıyla animasyonlu geçiş kullanın.

Uzantı performansını optimize etme

Notification Content Extension, yaklaşık 50 MB bellek sınırı olan kısıtlı bir ortamda çalışır. Performansı optimize etmek için resimlerin geç yüklenmesini kullanın, ana iş parçacığında ağır hesaplamalardan kaçının ve basit kısıtlamalarla Auto Layout uygulayın. Resim işleme veya veri ayrıştırma gibi ağır işlemleri arka plan kuyruklarında (DispatchQueue.global) yürütün. Bellek sınırı aşılırsa, sistem uzantıyı sonlandıracak ve kullanıcı standart bildirimi görecektir. Yayınlamadan önce uzantıyı Instruments (Allocations ve Time Profiler) aracılığıyla profillendirmeniz ve farklı iOS sürümlerine sahip gerçek cihazlarda bellek kullanımını kontrol etmeniz önerilir.

Sıkça Sorulan Sorular

Notification Content Extension'da SwiftUI kullanılabilir mi?

Evet, iOS 16'dan itibaren Notification Content Extension, UIHostingController aracılığıyla SwiftUI'yı destekler. Ancak, uzantılarda SwiftUI desteğinin sınırlı olması nedeniyle karmaşık arayüzler için UIKit daha kararlı bir seçimdir.

Uzantı neden bildirimim için etkinleşmiyor?

Bildirim yükündeki categoryIdentifier'ın uzantının Info.plist'indeki UNNotificationExtensionCategory ile eşleştiğini kontrol edin. Ayrıca uzantının ana uygulama target'ına eklendiğinden ve doğru şekilde imzalandığından emin olun.

Ana uygulamadan uzantıya veri nasıl aktarılır?

App Group — paylaşımlı depolama (UserDefaults suite) veya dosya kapsayıcısı kullanın. Ana uygulama ve uzantı aynı geliştirici grubunda olmalı ve App Groups özelliği etkinleştirilmiş olmalıdır.

Yeni bildirim olmadan uzantı içeriği nasıl güncellenir?

Medya kontrolü için didReceive(_:with:) with UNNotificationContentExtensionMediaPlayPauseButtonType yöntemini kullanın veya temsilci aracılığıyla güncelleme isteyin. Yeni bildirim olmadan tam içerik güncellemesi mümkün değildir.

Notification Content Extension nasıl hata ayıklanır?

Xcode'da uzantının target'ını seçin ve simülatörde çalıştırın. Normal bir uygulamada olduğu gibi lldb ve kesme noktaları kullanın. Test etmek için Firebase Console aracılığıyla veya yerel olarak Pusher aracılığıyla push bildirimi gönderin.

Özet

  • Notification Content Extension — push bildirimlerinin özel görüntülenmesi için iOS uzantısı.
  • Uzantı UNNotificationContentExtension'ı uygular ve tam UIKit arayüzü sağlar.
  • Eşleşen categoryIdentifier'a sahip bildirimler için etkinleştirilir.
  • Haritalar, resimler, videolar, animasyonlar gibi herhangi bir UI bileşenini destekler.
  • App Group aracılığıyla erişimle izole süreçte çalışır.
  • Boyut sınırı — açılmış uzantının 50 MB'ı.
  • Medya içeriği için Service Extension tarafından hazırlanan UNNotificationAttachment kullanın.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun