Dynamic Island — area interaktif di bagian atas iPhone 14 Pro dan semua iPhone 15/16, yang menggabungkan notifikasi, aktivitas latar belakang, dan indikator sistem dalam satu zona dinamis. Berbeda dengan potongan tradisional (notch), Dynamic Island mengubah bentuk dan ukurannya tergantung pada konteks saat ini. Menurut data Apple (WWDC 2024), pengguna berinteraksi dengan Dynamic Island rata-rata 12 kali sehari — melalui sentuhan, tekan lama, dan Live Activities dengan ActivityKit. Baca lebih lanjut tentang animasi di iOS di artikel tentang Corner Radius.
Poin Utama
Dynamic Island — adalah area interaktif berdasarkan solusi perangkat lunak-perangkat keras Apple, diperkenalkan pada September 2022 bersama iPhone 14 Pro. Secara fisik, ini adalah potongan berbentuk pil yang dikelilingi oleh piksel OLED yang secara dinamis mengubah warna dan bentuk. Apple menggunakan kombinasi kompartemen perangkat keras untuk kamera dan Face ID dengan rendering perangkat lunak area hitam di sekitarnya, menciptakan ilusi «pulau» hidup.
Tujuan utama Dynamic Island adalah untuk menjembatani kesenjangan antara notifikasi sistem dan konten aktif. Alih-alih notifikasi muncul di tengah layar (seperti di Android) atau sebagai spanduk di atas (seperti di iOS yang lebih lama), Dynamic Island mengintegrasikannya langsung ke area perangkat keras. Ini mengurangi gangguan dan menciptakan kesan ruang yang menyatu.
Menurut data Apple (iOS 17 Adoption Statistics, 2024), Dynamic Island tersedia di 38% iPhone aktif. Mulai dari iPhone 15 (2023), semua model dalam seri mendapatkan Dynamic Island, termasuk model dasar. Di iOS 18, Apple memperluas API Live Activities dengan menambahkan dukungan untuk timer hitung mundur dan hasil olahraga langsung di Dynamic Island.
Dynamic Island tersedia di iPhone 14 Pro, iPhone 14 Pro Max, iPhone 15, iPhone 15 Plus, iPhone 15 Pro, iPhone 15 Pro Max, iPhone 16, iPhone 16 Plus, iPhone 16 Pro, iPhone 16 Pro Max. Di iPad, Dynamic Island tidak ada. Untuk pengembangan dengan Dynamic Island diperlukan Xcode 14.1+ dan iOS 16.1+.
Dynamic Island mendukung tiga keadaan tampilan: ringkas (compact), minimal (minimal), dan diperluas (expanded). Transisi antar keadaan dianimasikan menggunakan animasi UIKit dan Core Animation. Sistem itu sendiri mengelola prioritas aktivitas: jika beberapa aplikasi mencoba menampilkan konten secara bersamaan, iOS menggunakan antrian berdasarkan waktu mulai aktivitas terakhir.
| Keadaan | Ukuran | Konten | Contoh |
|---|---|---|---|
| Compact | 49×18 pt | Ikon aplikasi + ikon sistem | Timer, musik, panggilan |
| Minimal | Hingga 66×18 pt | Ikon + teks pendek | Petunjuk navigasi, langkah |
| Expanded | Hingga 364×160 pt | Widget lengkap dengan konten | Skor olahraga, status taksi |
Keadaan ringkas — tampilan standar Dynamic Island ketika satu tugas latar belakang aktif. Ditampilkan sebagai pil bulat dengan ikon aplikasi di kiri dan ikon sistem di kanan. Secara default, semua Live Activities dimulai dalam keadaan ringkas.
Keadaan minimal terjadi ketika dua atau lebih tugas aktif secara bersamaan. Dynamic Island «terbelah» menjadi dua elemen terpisah di kiri dan kanan kamera. Keadaan minimal memungkinkan menampilkan dua sumber informasi independen, misalnya waktu kedatangan taksi dan trek saat ini.
Keadaan diperluas diaktifkan dengan tekan lama pada Dynamic Island. Dalam mode ini, widget lengkap dengan konten yang dapat disesuaikan ditampilkan: judul, deskripsi, bilah kemajuan, tombol. Keadaan diperluas mendukung pengguliran dan elemen interaktif.
ActivityKit — framework Swift, diperkenalkan di iOS 16.1, yang memungkinkan aplikasi mempublikasikan Live Activities di Dynamic Island dan Lock Screen. ActivityKit menggunakan arsitektur berbasis ActivityView dan ActivityAttributes: yang pertama menentukan jenis konten, yang kedua — data variabel. Framework bekerja bersama WidgetKit, tetapi tidak seperti widget, Live Activities dapat diperbarui secara real-time tanpa membuka aplikasi.
import ActivityKit
import SwiftUI
// Menentukan atribut aktivitas
struct DeliveryAttributes: ActivityAttributes {
public struct ContentState: Codable, Hashable {
var driverName: String
var distanceToArrival: Double
var estimatedMinutes: Int
}
var orderNumber: String
}
// Memulai Live Activity
func startDeliveryActivity() {
let initialState = DeliveryAttributes.ContentState(
driverName: "Alexey",
distanceToArrival: 3.5,
estimatedMinutes: 12
)
let attributes = DeliveryAttributes(orderNumber: "ORD-2024-8912")
let activity = try? Activity.request(
attributes: attributes,
contentState: initialState,
pushType: .token
)
}
Live Activities diperbarui melalui ActivityView, yang merender konten SwiftUI untuk Dynamic Island. Sistem sendiri menentukan template mana yang akan digunakan (ringkas, minimal, atau diperluas), tergantung pada ukuran Dynamic Island dan jumlah aktivitas. Untuk memperbarui konten, panggil activity.update(using: contentState). Untuk mengakhiri — activity.end(dismissalPolicy: .immediate).
ActivityKit mendukung pembaruan push melalui APNs (Apple Push Notification Service). Saat memulai Live Activity, Anda dapat meminta pushToken dan mengirim pembaruan dari server tanpa perlu menjalankan aplikasi di perangkat. Pembaruan push bekerja melalui activity.pushToken dan Activity.pushToStartToken untuk memulai Live Activity dari jarak jauh.
// Memperbarui Live Activity melalui Push
func updateActivity(activity: Activity<DeliveryAttributes>) {
let updatedState = DeliveryAttributes.ContentState(
driverName: "Alexey",
distanceToArrival: 1.2,
estimatedMinutes: 4
)
let alertConfiguration = AlertConfiguration(
title: "Kurier sudah dekat",
body: "Alexey akan tiba dalam 4 menit",
sound: .default
)
await activity.update(
using: updatedState,
alertConfiguration: alertConfiguration
)
}
AlertConfiguration — parameter tambahan yang menampilkan notifikasi di atas Dynamic Island pada pembaruan penting (misalnya, «Kurir tiba»). Tanpa AlertConfiguration, konten diperbarui secara diam-diam, yang cocok untuk bilah kemajuan dan timer.
Notch (potongan) — area perangkat keras iPhone X–13, yang berisi kamera depan, sensor Face ID, dan speaker. Notch bersifat statis: ukuran dan bentuknya tidak berubah, dan notifikasi ditampilkan di bawahnya dalam bentuk spanduk standar. Dynamic Island, sebaliknya, menggunakan piksel di sekitar potongan untuk menampilkan konten, menjadikan elemen perangkat keras sebagai bagian dari antarmuka.
| Kriteria | Dynamic Island | Notch |
|---|---|---|
| Interaktivitas | Mendukung sentuhan, tekan lama, gesekan | Tidak interaktif |
| Adaptasi konten | Mengubah bentuk sesuai konteks | Statis, konten di bawah potongan |
| Live Activities | Dukungan bawaan melalui ActivityKit | Tidak — hanya notifikasi biasa |
| Multitasking | Dua aktivitas simultan (kiri dan kanan) | Hanya satu aktivitas |
| Ketersediaan | iOS 16.1+, iPhone 14 Pro dan lebih baru | iOS 11+, iPhone X–13 |
Menurut Apple Human Interface Guidelines (2025), Dynamic Island tidak boleh digunakan untuk iklan atau menampilkan konten statis secara terus-menerus. Live Activities hanya ditujukan untuk tugas latar belakang dengan siklus hidup yang jelas: timer, pengiriman, olahraga, musik, navigasi. Pelanggaran aturan ini menyebabkan penolakan aplikasi di App Store Review.
Dynamic Island memiliki siklus hidup yang ketat: aktivitas dimulai dengan permintaan melalui Activity.request(), melewati keadaan aktif/dijeda/diperbarui dan berakhir dengan panggilan activity.end(). Sistem dapat memaksa mengakhiri aktivitas saat kehabisan memori (misalnya, saat memulai kamera). Dalam hal ini, aplikasi menerima notifikasi melalui ActivityActivityState.finished.
Gestur Dynamic Island diproses oleh konten SwiftUI di dalam ActivityView. Gestur standar: sentuh pada keadaan ringkas membuka aplikasi, tekan lama membuka keadaan diperluas, gesek ke bawah menutup keadaan diperluas. Gestur kustom ditambahkan melalui pengubah SwiftUI (onTapGesture, onLongPressGesture) di dalam tampilan aktivitas.
Ketika sistem mengakhiri Live Activity (atau pengguna menghapusnya dengan menggesek), aplikasi harus menangani keadaan finished untuk membebaskan sumber daya. Disarankan untuk berlangganan Activity.activityStateUpdates dan menghapus referensi lokal ke aktivitas setelah selesai.
import ActivityKit
func observeActivityState(activity: Activity<DeliveryAttributes>) {
Task {
for await state in activity.activityStateUpdates {
switch state {
case .active:
print("Activity aktif di Dynamic Island")
case .dismissed:
print("Activity disembunyikan oleh pengguna")
await activity.end(dismissalPolicy: .immediate)
case .finished:
print("Activity diakhiri oleh sistem")
cleanupResources()
@unknown default:
break
}
}
}
}
Rekomendasi Apple (WWDC 2024, Session 10146): jangan gunakan Dynamic Island untuk menampilkan status yang tidak memerlukan perhatian pengguna. Setiap Live Activity harus memiliki pemicu awal dan akhir yang jelas. Untuk pembaruan latar belakang tanpa UI, gunakan Background Tasks, bukan Live Activities.
Pertanyaan yang Sering Diajukan
Dynamic Island tersedia di iPhone 14 Pro, 14 Pro Max dan semua model iPhone 15 dan iPhone 16 (termasuk versi dasar). Untuk pengembangan diperlukan iOS 16.1+ dan Xcode 14.1. Pada model yang lebih lama (iPhone X–13) digunakan potongan statis notch, yang tidak mendukung Live Activities.
Dynamic Island mengintegrasikan notifikasi ke area perangkat keras layar tanpa menutupi konten. Notifikasi biasa muncul sebagai spanduk di atas dan menghilang setelah beberapa detik. Live Activities di Dynamic Island dapat tetap aktif selama berjam-jam dan diperbarui secara real-time (status pengiriman, timer, musik).
Gunakan pembaruan push melalui APNs. Saat memulai Live Activity, panggil activity.pushToken dan kirim token ke server Anda. Server mengirim permintaan pembaruan melalui APNs dengan ContentState baru. Alternatif — pembaruan lokal melalui activity.update(using:) dari aplikasi itu sendiri.
iOS secara otomatis membagi Dynamic Island menjadi dua segmen ketika ada dua Live Activities aktif. Setiap aktivitas ditampilkan dalam keadaan minimal di kiri dan kanan kamera. Dengan tekan lama pada salah satu segmen, keadaan diperluas hanya untuk aplikasi itu yang terbuka.
Periksa: (1) aplikasi memiliki NSSupportsLiveActivities = YES di Info.plist, (2) ActivityAttributes dan ContentState mengimplementasikan Codable dan Hashable, (3) versi iOS 16.1+, (4) perangkat mendukung Dynamic Island. Untuk simulator, gunakan iPhone 14 Pro atau lebih baru di Xcode.
Kesimpulan
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.
Baca juga