Notification Content Extension — esensi, UI khusus dan konfigurasi di iOS

Penulis: IT Sectr Diterbitkan: 2026-06-15 Waktu membaca: 9 mnt

Notification Content Extension — adalah jenis ekstensi iOS yang menggantikan template notifikasi push standar dengan antarmuka pengguna yang sepenuhnya khusus. Pengembang mendapatkan kemampuan untuk menampilkan gambar, pemutar audio, tombol tindakan, bilah progres, dan animasi khusus di dalam notifikasi, memperluas banner standar menjadi mini-aplikasi yang lengkap. Menurut data WWDC 2025, ekstensi ini menggunakan UNNotificationContentExtension dan mendukung hingga 4 lampiran media dalam satu notifikasi, serta pemrosesan tindakan interaktif melalui UNNotificationAction.

Poin utama

  • Notification Content Extension membuat antarmuka khusus untuk notifikasi push alih-alih template sistem standar
  • Arsitektur didasarkan pada protokol UNNotificationContentExtension dengan metode didReceive(_:with:) dan didReceive(_:withCompletionHandler:)
  • Ekstensi dapat menampilkan lampiran media — gambar, audio, dan video — langsung di dalam notifikasi tanpa membuka aplikasi
  • Notifikasi interaktif mendukung tindakan khusus dengan umpan balik dan masukan teks
  • Ukuran antarmuka terbatas — tinggi maksimum notifikasi khusus 320 poin di iPhone dan 352 di iPad

Apa itu Notification Content Extension

Notification Content Extension — adalah ekstensi aplikasi yang mengganti tampilan notifikasi push di iOS. Alih-alih banner standar dengan judul, badan pesan, dan tombol, dapat ditampilkan antarmuka yang sepenuhnya dirancang di Interface Builder atau secara pemrograman melalui UIKit atau SwiftUI.

Tidak seperti Notification Service Extension, yang mengubah konten sebelum ditampilkan, Content Extension hanya bertanggung jawab atas presentasi visual. Ekstensi menerima notifikasi yang sudah jadi setelah semua modifikasi dan memutuskan bagaimana menampilkannya. Ini adalah perbedaan utama antara kedua jenis ekstensi notifikasi.

Ekstensi diaktifkan ketika pengguna melakukan gerakan perluasan — menggulir notifikasi ke bawah atau mengekliknya (tergantung model perangkat). iOS memulai proses ekstensi, membuat pengontrol dari nib atau storyboard yang ditentukan, dan mengirimkan notifikasi melalui UNNotificationContentExtension.

Membuat antarmuka notifikasi khusus

Pengembangan dimulai dengan menambahkan target baru di Xcode dengan template Notification Content Extension. Xcode membuat file MainInterface.storyboard dan kelas yang mewarisi UIViewController, mengimplementasikan protokol UNNotificationContentExtension.

Ukuran dan batasan antarmuka

Tinggi maksimum area khusus — 320 poin di iPhone (untuk model dengan layar besar) dan 352 poin di iPad. Konten yang melampaui batas ini akan terpotong. Untuk adaptasi ke berbagai ukuran, disarankan menggunakan Auto Layout dan UIScrollView untuk konten yang dapat digulir. Lebar selalu sama dengan lebar notifikasi dan berubah secara otomatis saat perangkat diputar.

Apple Human Interface Guidelines memperingatkan: antarmuka notifikasi harus ringkas dan hanya berisi satu elemen utama — gambar, pemutar, peta, atau formulir masukan cepat. Banyak elemen interaktif membebani pengguna dan mempersulit interaksi.

Komunikasi dengan aplikasi utama

App Group — satu-satunya mekanisme pertukaran data antara ekstensi dan aplikasi utama. Melalui direktori bersama App Group, gambar cache, token, dan pengaturan dapat ditransfer. Panggilan API langsung ke aplikasi utama atau akses ke UserDefaults-nya tidak tersedia karena isolasi proses.

swift
class NotificationViewController: UIViewController {

    func didReceive(
        _ notification: UNNotification
    ) {
        guard let attachment = notification
            .request.content.attachments.first()
        else { return }
        if attachment.url.startAccessingSecurityScopedResource() {
            imageView.image = UIImage(contentsOfFile:
                attachment.url.path)
            attachment.url.stopAccessingSecurityScopedResource()
        }
    }
}

Protokol UNNotificationContentExtension

UNNotificationContentExtension — protokol utama yang mendefinisikan siklus hidup notifikasi khusus. Protokol ini menyediakan metode untuk menerima konten, memproses tindakan, dan mengelola antarmuka.

Metode didReceive:with:

didReceive(_:with:) dipanggil saat menerima notifikasi. Ekstensi menerima objek UNNotification dan UNNotificationContentExtensionMediaPlayPauseButtonType untuk mengelola pemutar media. Dalam metode ini, antarmuka harus dikonfigurasi — memuat gambar, menginisialisasi pemutar, atau menampilkan data. Sistem memanggil metode ini setiap kali notifikasi diperbarui secara real-time.

Penting untuk diingat bahwa ekstensi memiliki waktu terbatas untuk eksekusi — sekitar 30 detik untuk siklus tampilan penuh. Jika antarmuka tidak siap dalam waktu ini, iOS akan menampilkan notifikasi sistem. Untuk sumber daya berat — memuat gambar dari jaringan, mendekode video — disarankan menggunakan operasi asinkron dengan caching awal melalui App Group.

Mengelola pemutar media

Protokol ini mencakup metode opsional untuk tombol play/pause: mediaPlay, mediaPause, dan mediaPlayPauseButtonType. Jika notifikasi berisi konten audio atau video, ekstensi dapat menampilkan pemutar bawaan dengan elemen kontrol sistem. iOS secara otomatis menambahkan tombol putar di sudut kanan atas ekstensi saat mengembalikan jenis tombol yang sesuai.

Lampiran media dan pemrosesannya

UNNotificationAttachment — objek yang berisi data media yang dilampirkan ke notifikasi. Gambar, file audio, dan video ditambahkan pada tahap pembuatan notifikasi di server atau di Notification Service Extension melalui UNNotificationAttachment.

Format yang didukung

Untuk gambar: JPEG, PNG, GIF, HEIF. Untuk audio: MP3, AAC, ALAC, WAV. Untuk video: MPEG-4, H.264, HEVC. Ukuran maksimum setiap lampiran — 50 MB, hingga 4 lampiran per notifikasi. Sistem secara otomatis mengunduh lampiran di latar belakang sebelum menampilkan notifikasi dan menyediakan akses ekstensi ke URL lokal melalui sumber daya security-scoped.

Menurut Apple, ekstensi tidak boleh memuat media secara mandiri — UNNotificationAttachment sudah berisi URL lokal setelah pengunduhan selesai oleh sistem. Namun, jika lampiran tidak diunduh tepat waktu (misalnya, saat koneksi buruk), ekstensi dapat menampilkan placeholder atau teks alternatif.

Bekerja dengan sumber daya security-scoped

Setiap UNNotificationAttachment menyediakan security-scoped URL, yang harus diakses ekstensi melalui startAccessingSecurityScopedResource() dan dibebaskan melalui stopAccessingSecurityScopedResource(). Metode ini harus dipanggil berpasangan — jika tidak, sumber daya tidak akan dibebaskan dan menyebabkan kebocoran hak akses.

swift
let attachment = notification.request.content.attachments.first()
guard attachment.url.startAccessingSecurityScopedResource()
else { return }
defer { attachment.url.stopAccessingSecurityScopedResource() }
let data = try Data(contentsOf: attachment.url)
imageView.image = UIImage(data: data)

Notifikasi interaktif dan tindakan

Notification Content Extension mendukung tindakan interaktif khusus — tombol yang ditampilkan di bawah konten notifikasi. Tindakan didaftarkan saat membuat kategori notifikasi melalui UNNotificationCategory dan dapat bersifat destruktif, teks, atau latar belakang.

Jenis tindakan

UNNotificationAction — tindakan sederhana dengan judul dan flag destruktif opsional. UNTextInputNotificationAction — tindakan dengan bidang masukan teks, misalnya untuk balasan cepat ke pesan. Kedua jenis mendukung opsi UNNotificationActionOptions.authenticationRequired — persyaratan untuk membuka kunci perangkat sebelum eksekusi.

Ekstensi menerima tindakan yang dipilih melalui metode didReceive(_:withCompletionHandler:), di mana objek UNNotificationResponse dengan pengidentifikasi tindakan dan teks opsional diteruskan. Ekstensi dapat memproses respons secara mandiri atau meneruskannya ke aplikasi utama melalui wadah bersama App Group.

swift
let category = UNNotificationCategory(
    identifier: "message",
    actions: [
        UNTextInputNotificationAction(
            identifier: "reply",
            title: "Reply",
            options: .authenticationRequired
        ),
        UNNotificationAction(
            identifier: "mark_read",
            title: "Mark Read",
            options: .foreground
        )
    ],
    intentIdentifiers: []
)

Pertanyaan yang sering diajukan

Apa perbedaan antara Notification Content Extension dan Service Extension?

Content Extension bertanggung jawab atas tampilan visual notifikasi, sedangkan Service Extension bertanggung jawab atas perubahan konten sebelum ditampilkan. Content Extension bekerja setelah Service Extension dan tidak dapat mengubah payload notifikasi.

Bahasa pemrograman apa yang didukung?

Swift dan Objective-C untuk UIKit. Mulai iOS 16, SwiftUI juga didukung untuk membuat antarmuka notifikasi melalui NotificationContentView dengan pengubah ukuran dan konfigurasi.

Bisakah SwiftUI digunakan di Notification Content Extension?

Ya, mulai iOS 16 ekstensi dapat menggunakan SwiftUI melalui UIHostingController. Namun, semua kompetensi UIKit — ukuran, batasan, sumber daya security-scoped — tetap dipertahankan dan diterapkan pada konten SwiftUI.

Berapa banyak lampiran media yang dapat dilampirkan ke notifikasi?

Hingga 4 lampiran per notifikasi. Setiap lampiran hingga 50 MB. Didukung gambar (JPEG, PNG, HEIF), audio (MP3, AAC), dan video (MPEG-4, H.264).

Bagaimana cara mentransfer data dari ekstensi ke aplikasi utama?

Melalui App Group — direktori bersama pada disk. UserDefaults dengan akhiran app group juga berfungsi. Panggilan API langsung ke aplikasi utama tidak tersedia karena isolasi proses ekstensi.

Kesimpulan

  • Notification Content Extension menggantikan antarmuka notifikasi standar dengan antarmuka khusus dengan elemen visual apa pun
  • Arsitektur menggunakan protokol UNNotificationContentExtension dengan metode didReceive untuk memperbarui antarmuka
  • UNNotificationAttachment menyediakan lampiran media dengan unduhan latar belakang otomatis dan akses security-scoped
  • Tindakan interaktif mendukung masukan teks dan operasi destruktif melalui UNNotificationAction
  • Tinggi maksimum antarmuka — 320 poin di iPhone, untuk adaptasi konten disarankan UIScrollView
  • Pertukaran data dengan aplikasi utama — hanya melalui App Group dan direktori bersama pada disk

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