Notification Content Extension — apa itu, cara membuat antarmuka kustom untuk iOS

Penulis: IT Sectr Diterbitkan: 2026-03-21 Waktu membaca: 8 mnt

Notification Content Extension — adalah ekstensi iOS yang memungkinkan Anda mengganti antarmuka standar notifikasi push dengan UIView kustom. Pengembang mendapatkan kendali penuh atas tampilan konten: gambar, video, animasi, font kustom, dan elemen interaktif. Menurut Apple Developer, 2025, Notification Content Extension mendukung antarmuka UIKit apa pun dalam ruang notifikasi yang terbatas.

Poin-poin utama

  • Notification Content Extension — ekstensi iOS untuk UI kustom notifikasi push.
  • Ekstensi mengimplementasikan protokol UNNotificationContentExtension dengan metode wajib didReceive.
  • Antarmuka kustom dibuat di Storyboard dan dapat berisi komponen UIKit apa pun.
  • Ukuran maksimum ekstensi — 50 MB dan tidak boleh melebihi 12 MB dalam bentuk terkompresi.
  • Ekstensi diaktifkan untuk notifikasi dengan categoryIdentifier yang ditentukan.

Apa itu Notification Content Extension

Notification Content Extension — adalah ekstensi aplikasi di iOS yang mengganti template tampilan standar notifikasi push dengan UIView kustom. Berbeda dengan notifikasi biasa, di mana konten terbatas pada judul, subjudul, dan isi, ekstensi memungkinkan menampilkan antarmuka UIKit apa pun: peta dengan koordinat, grafik, galeri gambar, atau formulir input.

Bagaimana cara kerjanya

Ketika iOS menerima notifikasi push dengan categoryIdentifier yang ditentukan, sistem memeriksa apakah ekstensi terdaftar untuk kategori ini. Jika ya — sistem menjalankan ekstensi dalam proses terpisah dan memberikan konten notifikasi. Ekstensi menampilkan antarmuka sendiri alih-alih standar. Pengguna berinteraksi dengan antarmuka kustom tanpa membuka aplikasi utama.

Perbedaan dari Notification Service Extension

Penting untuk tidak membingungkan Notification Content Extension dengan Notification Service Extension. Service Extension memproses konten sebelum notifikasi ditampilkan (mengunduh lampiran, dekripsi). Content Extension mengganti antarmuka setelah menerima konten siap. Kedua ekstensi dapat bekerja bersama: Service Extension menyiapkan data, Content Extension menampilkannya.

KarakteristikContent ExtensionService Extension
TujuanUI kustom notifikasiModifikasi konten sebelum tampil
Waktu eksekusiSelama pengguna melihat notifikasiHingga 30 detik di latar belakang
AntarmukaUIKit UIView penuhTidak ada antarmuka
APIUNNotificationContentExtensionUNNotificationServiceExtension

Batasan ekstensi

Notification Content Extension bekerja dalam proses terisolasi dengan sumber daya terbatas. Ekstensi tidak memiliki akses ke penyimpanan utama aplikasi melalui NSUserDefaults, kecuali App Group. Ukuran ekstensi dibatasi hingga 50 MB dalam bentuk tidak terkompresi. Waktu untuk menampilkan konten juga terbatas — jika ekstensi tidak menyelesaikan pembaruan dalam waktu yang wajar, sistem akan menutupnya.

Membuat Notification Content Extension di Xcode

Untuk membuat ekstensi di Xcode, Anda perlu menambahkan target baru bertipe Notification Content Extension. Xcode akan secara otomatis membuat MainInterface.storyboard dengan controller yang mewarisi UIViewController dan mengimplementasikan UNNotificationContentExtension.

Menambahkan target-ekstensi

Di Xcode pilih File → New → Target → Notification Content Extension. Tentukan nama ekstensi, bahasa (Swift atau Objective-C) dan pastikan proyek terhubung ke tim pengembang yang sama. Setelah target dibuat, folder dengan tiga file akan muncul: MainInterface.storyboard, Info.plist dan file controller.

Konfigurasi Info.plist

Di Info.plist ekstensi, array NSExtensionAttributes dengan kunci UNNotificationExtensionCategory harus ditentukan. Array ini berisi identifier kategori notifikasi yang akan mengaktifkan ekstensi. Kunci opsional UNNotificationExtensionInitialContentSizeRatio menentukan rasio aspek awal antarmuka kustom untuk penempatan yang benar.

Arsitektur folder ekstensi

Disarankan untuk menjaga arsitektur yang bersih di target-ekstensi: folder terpisah untuk controller, folder terpisah untuk tampilan kustom. Karena ekstensi adalah file biner terpisah, kode aplikasi utama tidak dapat diakses langsung. Untuk berbagi kode, buat framework terpisah atau gunakan App Group untuk data.

Implementasi protokol UNNotificationContentExtension

UNNotificationContentExtension — protokol yang harus diimplementasikan oleh controller di Notification Content Extension. Satu-satunya metode wajib adalah didReceive(_:with:), yang dipanggil saat menerima notifikasi. Controller menerima notifikasi dan view controller siap yang perlu diperbarui dengan data.

Implementasi dasar controller

Controller ekstensi harus mewarisi UIViewController dan mengimplementasikan UNNotificationContentExtension. Storyboard atau xib terhubung dengan controller ini. Saat menerima notifikasi, metode didReceive memberikan konten, dan controller memperbarui tampilannya.

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)
    }
}

Mengelola ukuran antarmuka

Sistem menentukan ukuran antarmuka kustom berdasarkan kunci UNNotificationExtensionInitialContentSizeRatio di Info.plist dan konten saat ini. Disarankan untuk mengatur kunci ini ke nilai 0.1 untuk ukuran awal minimum, lalu mengubah ukuran melalui preferredContentSize setelah konten dimuat.

Kustomisasi antarmuka dan interaktivitas

Notification Content Extension memberikan kebebasan penuh dalam membuat antarmuka. Anda dapat menggunakan komponen UIKit apa pun: UITableView, MKMapView, WKWebView, UIStackView. Namun, penting untuk mempertimbangkan ruang notifikasi yang terbatas dan mengoptimalkan kinerja.

Menambahkan peta ke notifikasi

Salah satu skenario populer adalah menampilkan peta dengan lokasi. Untuk ini, di Storyboard ekstensi ditambahkan MKMapView, dan controller memberikan koordinat dari konten notifikasi. Penting untuk tidak lupa menambahkan MapKit ke target ekstensi. Saat menggunakan peta, pertimbangkan batas memori ekstensi — memuat ubin yang kompleks dapat melebihi sumber daya yang tersedia.

Animasi dan transisi

Notification Content Extension mendukung animasi UIView, termasuk mengubah ukuran, memindahkan, dan transparansi elemen. Saat memasuki mode notifikasi yang diperluas, Anda dapat memulai animasi kemunculan konten. Animasi harus pendek (hingga 0.5 detik) dan tidak mengganggu pengguna dalam berinteraksi dengan notifikasi. Hindari animasi tanpa akhir — mereka menghabiskan baterai dan mengurangi kinerja.

Menangani sentuhan di antarmuka kustom

Karena ekstensi adalah UIViewController penuh, Anda dapat menambahkan gesture dan penanganan sentuhan. Gesture UIKit (UITapGestureRecognizer, UIButton) bekerja secara standar. Untuk tindakan yang memerlukan pembukaan aplikasi, gunakan delegate ekstensi atau userNotificationCenter. Elemen interaktif harus cukup besar untuk disentuh dengan nyaman di ruang terbatas — ukuran minimum touch target adalah 44x44 poin sesuai rekomendasi Apple.

Bekerja dengan media dan lampiran

Konten multimedia — kemampuan kunci dari Notification Content Extension. Notifikasi dapat berisi gambar, GIF, audio, dan video yang ditampilkan di antarmuka kustom. Lampiran dikirimkan melalui UNNotificationAttachment, yang dapat ditambahkan baik oleh server melalui payload maupun oleh Notification Service Extension setelah diunduh. Format yang didukung adalah JPEG, PNG, MPEG-4, dan MP3.

Menampilkan media di ekstensi

Untuk menampilkan gambar, cukup dapatkan UNNotificationAttachment dari konten notifikasi dan muat dari URL lokal. Penting untuk diingat bahwa ekstensi hanya memiliki akses ke file lokal — sumber daya jarak jauh harus diunduh sebelumnya oleh Service Extension. Ukuran maksimum lampiran — 50 MB di iOS 15+, batas ini ditingkatkan dengan setiap pembaruan berikutnya. Untuk mendukung beberapa gambar, gunakan UNNotificationAttachment dengan identifier berbeda dan tampilkan melalui UIPageViewController.

Memuat dan menampilkan gambar

Untuk menampilkan gambar di antarmuka kustom, ekstensi mendapatkan UNNotificationAttachment dari konten notifikasi dan memuatnya dari URL lokal. Lampiran harus diunduh sebelumnya oleh Notification Service Extension — Content Extension tidak memiliki akses ke jaringan. Ukuran maksimum lampiran media — 50 MB di iOS 15+, di versi sebelumnya batasnya adalah 10 MB. Ekstensi harus menangani ketiadaan lampiran dengan benar dan menampilkan antarmuka fallback. Untuk pra-muat gambar resolusi rendah, gunakan versi thumbnail yang dibuat oleh Service Extension sebelum dilampirkan.

Memutar video di notifikasi

iOS mendukung pemutaran video di Notification Content Extension melalui AVPlayerLayer. Ekstensi dapat menampilkan pemutar video dengan tombol kontrol langsung di notifikasi. Ini sangat berguna untuk aplikasi pengawasan video, streaming, atau pratinjau konten. Pemutaran otomatis tanpa suara diizinkan asalkan pengguna mengharapkan konten multimedia dalam notifikasi ini. Saat mengimplementasikan pemutar video, tambahkan elemen kontrol: play/pause, bilah kemajuan, dan tombol tutup. Pastikan video tidak mulai otomatis dengan suara — ini melanggar rekomendasi Apple tentang pengalaman pengguna. Untuk slideshow dari beberapa gambar, gunakan transisi animasi antara mereka melalui UIView.transition dengan opsi transisi membalik halaman.

Optimalisasi kinerja ekstensi

Notification Content Extension bekerja di lingkungan terbatas dengan batas memori sekitar 50 MB. Untuk mengoptimalkan kinerja, gunakan pemuatan lambat gambar, hindari perhitungan berat di thread utama, dan terapkan Auto Layout dengan batasan sederhana. Operasi berat seperti pemrosesan gambar atau parsing data dilakukan di latar belakang (DispatchQueue.global). Jika batas memori terlampaui, sistem akan menutup ekstensi dan pengguna akan melihat notifikasi standar. Disarankan untuk memprofilkan ekstensi melalui Instruments (Allocations dan Time Profiler) sebelum publikasi, serta memeriksa konsumsi memori pada perangkat nyata dengan berbagai versi iOS.

Pertanyaan yang sering diajukan

Bisakah SwiftUI digunakan di Notification Content Extension?

Ya, sejak iOS 16 Notification Content Extension mendukung SwiftUI melalui UIHostingController. Namun, UIKit tetap menjadi pilihan yang lebih stabil untuk antarmuka kompleks karena dukungan SwiftUI yang terbatas di ekstensi.

Mengapa ekstensi tidak aktif untuk notifikasi saya?

Periksa apakah categoryIdentifier di payload notifikasi cocok dengan UNNotificationExtensionCategory di Info.plist ekstensi. Juga pastikan ekstensi ditambahkan ke target aplikasi utama dan ditandatangani dengan benar.

Bagaimana cara mentransfer data dari aplikasi utama ke ekstensi?

Gunakan App Group — penyimpanan bersama (UserDefaults suite) atau wadah file. Aplikasi utama dan ekstensi harus berada dalam grup pengembang yang sama dan memiliki kemampuan App Groups diaktifkan.

Bagaimana cara memperbarui konten ekstensi tanpa notifikasi baru?

Gunakan metode didReceive(_:with:) dengan UNNotificationContentExtensionMediaPlayPauseButtonType untuk kontrol media atau minta pembaruan melalui delegate. Pembaruan konten penuh tanpa notifikasi baru tidak dimungkinkan.

Bagaimana cara melakukan debug Notification Content Extension?

Pilih target ekstensi di Xcode dan jalankan di simulator. Gunakan lldb dan breakpoints seperti di aplikasi biasa. Untuk pengujian, kirim notifikasi push melalui Firebase Console atau secara lokal melalui Pusher.

Ringkasan

  • Notification Content Extension — ekstensi iOS untuk tampilan notifikasi push kustom.
  • Ekstensi mengimplementasikan UNNotificationContentExtension dan menyediakan antarmuka UIKit penuh.
  • Diaktifkan untuk notifikasi dengan categoryIdentifier yang cocok.
  • Mendukung komponen UI apa pun: peta, gambar, video, animasi.
  • Bekerja dalam proses terisolasi dengan akses melalui App Group.
  • Batas ukuran — 50 MB untuk ekstensi yang tidak terkompresi.
  • Untuk konten media, gunakan UNNotificationAttachment yang disiapkan oleh Service Extension.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga