Dynamic Island: co to jest, interaktywne powiadomienia iPhone

Autor: IT Sectr Opublikowano: 2026-02-16 Czas czytania: 9 min

Dynamic Island — interaktywny obszar w górnej części iPhone 14 Pro i nowszych, łączący sprzętowe wycięcie kamery z programowymi powiadomieniami w jeden element interfejsu. Dynamic Island dostosowuje kształt i rozmiar do typu treści: połączenie, timer, muzyka, Live Activity, podłączenie AirPods. Deweloperzy wchodzą w interakcję przez Dynamic Island API oparte na ActivityKit i WidgetKit. Więcej na Dynamic Island HIG.

Najważniejsze

  • Dynamic Island — programowo-sprzętowy element UI w iPhone 14 Pro i nowszych
  • Trzy tryby — kompaktowy, minimalny i rozszerzony o różnych rozmiarach treści
  • Live Activities — główny sposób na niestandardową treść w Dynamic Island
  • Animacje — system automatycznie zarządza przejściami między stanami Island
  • Zdarzenia systemowe — połączenia, AirPods, Face ID, ładowanie wbudowane w Dynamic Island

Czym jest Dynamic Island na iPhone?

Dynamic Island — element interfejsu iPhone 14 Pro, 15 Pro i nowszych, który wykorzystuje obszar wokół przedniego aparatu i czujników Face ID do wyświetlania powiadomień i Live Activity. W przeciwieństwie do starego wycięcia notch, które było statycznym czarnym elementem, Dynamic Island dynamicznie zmienia kształt i rozmiar: rozszerza się, aby wyświetlić timer, kurczy się dla ikony podłączonych AirPods, zamienia się w prostokąt dla wyników sportowych.

Realizacja techniczna Dynamic Island opiera się na sprzętowym wycięciu (pill-shaped cutout) ekranu OLED i programowym przetwarzaniu pikseli wokół niego. System zwiększa częstotliwość odświeżania pikseli do 120 Hz w obszarze Island i wykorzystuje wygładzanie do płynnego przejścia między treścią a czarnym obszarem kamery. Deweloper nie programuje Island bezpośrednio — tworzy treść przez ActivityKit, a system umieszcza ją wokół wycięcia automatycznie.

Percepcja użytkownika Dynamic Island zamienia sprzętową wadę w funkcjonalny element. Według badań Apple, użytkownicy postrzegają Island jako naturalną część ekranu już po kilku dniach użytkowania. Podświetlenie i animacje przyciągają uwagę — na przykład nadejście powiadomienia przesuwa Island i pokazuje treść z efektem rozszerzenia przy 120 klatkach na sekundę.

Tryby wyświetlania Dynamic Island

Dynamic Island obsługuje trzy tryby wyświetlania treści, które system wybiera automatycznie na podstawie typu i liczby aktywności. Deweloper określa UI dla każdego trybu w WidgetBundle, ale nie zarządza tym, który tryb jest aktywny w danym momencie. System może również wyświetlać dwie aktywności jednocześnie: jedna po lewej stronie wycięcia, druga po prawej.

TrybRozmiarTreśćPrzykład
Kompaktowy~50pt szerokośćIkona + krótki tekstTimer: ikona zegara + «05:00»
Minimalny~22pt okrągłyTylko ikona aplikacjiPowiadomienie o zrzucie ekranu
Rozszerzony~300pt x 80ptNiestandardowy SwiftUI ViewWynik sportowy z logo

Przejście między trybami odbywa się z systemową animacją o czasie trwania 0.4–0.6 sekundy z krzywą ease-in-out. Przy pojawieniu się nowej Activity Island rozszerza się z kompaktowego do rozszerzonego trybu. Po zakończeniu — kurczy się z powrotem. Użytkownik może wymusić zwinięcie rozszerzonego trybu przesunięciem w lewo — Island przechodzi w tryb kompaktowy lub minimalny. System również zwija rozszerzony tryb po 5 sekundach braku aktywności, jeśli nie oczekuje się aktualizacji.

Dwie aktywności — jeśli dwie aplikacje mają aktywne Live Activity, Dynamic Island pokazuje je z dwóch stron wycięcia. Lewa strona — pierwsza uruchomiona Activity, prawa — druga. Jeśli aktywność jest jedna, zajmuje lewą stronę, prawa pozostaje pusta. Po naciśnięciu dowolnej strony Island rozszerza się i pokazuje treść tej Activity. System sam decyduje, która Activity ma priorytet w przypadku konfliktu.

Tworzenie treści dla Dynamic Island

Treść Dynamic Island jest tworzona wyłącznie przez Live Activity z frameworkiem ActivityKit. Deweloper definiuje cztery obszary w kodzie: kompaktowy lewy (compactLeading), kompaktowy prawy (compactTrailing), minimalny (minimal) i rozszerzony (expanded). Każdy obszar to SwiftUI View, który otrzymuje bieżący stan Activity przez context. Jeśli obszar nie jest zdefiniowany, Island nie wyświetla tej Activity w odpowiednim trybie.

swift
struct DeliveryIsland: DynamicIsland {
    var body: some DynamicIslandContent {
        DynamicIslandExpandedContent {
            VStack(alignment: .leading) {
                Text(context.state.status)
                    .font(.headline)
                ProgressView(
                    value: context.state.progress
                )
                Text("ETA: \(context.state.minutes) min")
                    .font(.caption)
            }
        } compactLeading: {
            Image(systemName: "box.truck")
        } compactTrailing: {
            Text("\(context.state.minutes) min")
                .monospacedDigit()
        } minimal: {
            Image(systemName: "box.truck")
        }
    }
}

Ograniczenia SwiftUI w Dynamic Island — dostępne komponenty: Text, Image, HStack, VStack, ZStack, Spacer, ProgressView, Button (tylko przez Link), Gauge. Zabronione: ScrollView, List, TabView, animacje, gesture recognizers. Paleta kolorów — tylko System Colors (label, secondaryLabel, tint). Czcionki — systemowe rozmiary od .caption do .title3. Niestandardowe czcionki i SF Symbols działają poprawnie.

Testowanie Dynamic Island — Xcode udostępnia symulator z obsługą Dynamic Island. Wybierz iPhone 14 Pro lub 15 Pro jako urządzenie docelowe. ActivityKit symuluje różne tryby Island: przycisk Dynamic Island Mode w menu Debug w Xcode przełącza między kompaktowym, minimalnym i rozszerzonym. Do testowania wielu Activity jednocześnie użyj schematów z różnymi ActivityID lub uruchom dwie instancje aplikacji.

Zdarzenia systemowe w Dynamic Island

Zdarzenia systemowe — połączenia, AirPods, Face ID, ładowanie i inne — mają priorytet nad niestandardowymi Live Activity. Gdy występuje zdarzenie systemowe, Island wstrzymuje wyświetlanie niestandardowej treści i pokazuje systemową. Po zakończeniu zdarzenia systemowego Island wraca do niestandardowej treści z animacją. Deweloper nie może anulować ani zmienić zdarzeń systemowych — są one zarządzane na poziomie systemu operacyjnego iOS.

Zdarzenie systemoweFormat wyświetlaniaPriorytet
Połączenie przychodząceMinimalna karta z nazwą kontaktuWysoki
AirPodsAnimacja + poziom bateriiŚredni
Face IDIkona kłódkiŚredni
ŁadowanieIkona błyskawicy + procentyNiski
AirDropPostęp transferuŚredni
Zrzut ekranuAnimacja migawkiNiski

Połączenie przychodzące — najważniejsze zdarzenie systemowe. Dynamic Island pokazuje nazwę dzwoniącego po lewej stronie wycięcia i czas trwania/status po prawej. Podczas aktywnego połączenia Island nie wyświetla żadnych niestandardowych Live Activity. Użytkownik może rozszerzyć Island, aby otworzyć ekran połączenia, lub zwinąć, aby kontynuować pracę w aplikacji z aktywnym połączeniem w tle.

Podłączanie AirPods — po otwarciu etui obok iPhone Dynamic Island animuje podłączenie i pokazuje poziom naładowania każdej słuchawki i etui. Animacja trwa 2–3 sekundy, po czym Island wraca do poprzedniego stanu. Jeśli użytkownik nie miał aktywnych Live Activity, Island pozostaje pusty. AirPods Pro 2 wyświetlają również głośność i tryb redukcji szumów po naciśnięciu nóżki.

Najlepsze praktyki programowania dla Dynamic Island

Najlepsze praktyki Dynamic Island od Apple zaleca się przestrzegać w celu zapewnienia wysokiej jakości doświadczenia użytkownika. Tryb kompaktowy powinien wyświetlać tylko najważniejsze informacje — ikonę i jedną liczbę lub krótką etykietę. Tryb rozszerzony — tylko kluczowe informacje bez zbędnych elementów. Unikaj umieszczania tekstu w trybie kompaktowym, jeśli przekracza 20 znaków — system obcina tekst wielokropkiem.

Aktualizacje Push dla Dynamic Island — używaj ActivityKit push do rzadkich aktualizacji (status zamówienia, wyniki sportowe) i lokalnych aktualizacji do częstych timerów lub stoperów. Powiadomienia push przechodzą przez APNs i zajmują 0.5–2 sekundy do wyświetlenia w Island. StaleDate — ustawiaj datę dezaktualizacji treści: jeśli aktualizacja nie nadeszła na czas, system pokazuje szare tło zamiast treści, sygnalizując użytkownikowi nieaktualne dane.

swift
func updateDelivery(activity: Activity<DeliveryAttributes>) {
    Task {
        let newContent = ActivityContent(
            state: DeliveryAttributes.ContentState(
                status: .delivered,
                estimatedMinutes: 0
            ),
            staleDate: Date().addingTimeInterval(300)
        )
        await activity.update(newContent)
        // Kończymy Activity za 2 sekundy
        try? await Task.sleep(nanoseconds: 2_000_000_000)
        await activity.end(newContent)
    }
}

Zużycie energii — Dynamic Island i Live Activities mają minimalny wpływ na baterię dzięki optymalizacji sprzętowej ekranu OLED. Czarne piksele wokół wycięcia są wyłączone, a treść jest renderowana na dedykowanym koprocesorze. Średnie zużycie Live Activity — poniżej 1% baterii na godzinę użytkowania przy aktualizacji co 5 minut. System automatycznie wstrzymuje Island przy niskim poziomie baterii (poniżej 20%) lub w trybie oszczędzania energii.

Projektowanie dla Dynamic Island nie wymaga adaptacji głównego UI aplikacji — Island działa niezależnie od aktywnego ekranu. Kolory Live Activity powinny odpowiadać systemowemu motywowi (jasny/ciemny) przez systemowe Color Assets. SF Symbols są preferowane nad niestandardowymi ikonami — gwarantują poprawne wyświetlanie w każdym trybie Island i mają wbudowaną obsługę Dynamic Type.

Często zadawane pytania

Jak Dynamic Island wygląda na starszych iPhone?

Dynamic Island jest dostępny tylko na iPhone 14 Pro, 14 Pro Max, 15 Pro, 15 Pro Max i nowszych z iOS 16.1+. Na starszych iPhone z «grzywką» Dynamic Island nie jest wyświetlany — Live Activity pokazuje się jako zwykły baner na ekranie blokady. Deweloper nie musi pisać innego kodu: system sam dostosowuje interfejs do możliwości urządzenia.

Czy można umieścić dwie Live Activity w Dynamic Island?

Dynamic Island obsługuje wyświetlanie dwóch aktywności jednocześnie — są one umieszczone po lewej i prawej stronie wycięcia kamery. Jeśli aktywność jest jedna, zajmuje lewą stronę, a prawa pozostaje w stanie kompaktowym. Po naciśnięciu dowolnej strony Island rozszerza się i pokazuje treść odpowiedniej Activity.

Jakie zdarzenia systemowe korzystają z Dynamic Island?

Zdarzenia systemowe w Dynamic Island: połączenie przychodzące z minimalną kartą i nazwą kontaktu, podłączenie AirPods z animacją i poziomem baterii, Face ID z ikoną kłódki, ładowanie urządzenia z procentem, tryb modemu, zmiana głośności, włączenie Silent Mode, AirDrop z postępem transferu i zrzut ekranu z animacją migawki.

Jak dodać obsługę Dynamic Island do aplikacji?

Dynamic Island nie wymaga osobnego API — wyświetla Live Activity utworzone przez ActivityKit wraz z WidgetKit. Aplikacja rejestruje Activity z konfiguracją DynamicIsland, określa kompaktowy, minimalny i rozszerzony SwiftUI View. System automatycznie pokazuje go w Dynamic Island na obsługiwanych urządzeniach.

Czy są ograniczenia dotyczące treści w Dynamic Island?

Dynamic Island jest ograniczony do trzech stanów wizualnych o różnych rozmiarach: kompaktowy do 50pt, minimalny do 22pt, rozszerzony do 300pt. W trybie kompaktowym nie zaleca się umieszczania tekstu dłuższego niż 20 znaków. Dostępne są tylko systemowe komponenty SwiftUI — Text, Image, ProgressView, Gauge. Niestandardowe czcionki i kolory są ograniczone do systemowej palety.

Podsumowanie

  • Dynamic Island — interaktywny obszar wokół wycięcia kamery w iPhone 14 Pro i nowszych
  • Trzy tryby — kompaktowy, minimalny i rozszerzony z systemowym zarządzaniem przejściami
  • Live Activity — jedyny sposób na niestandardową treść przez ActivityKit i WidgetKit
  • Zdarzenia systemowe — połączenia, AirPods, Face ID, ładowanie mają priorytet nad niestandardową treścią
  • Ograniczenia SwiftUI — tylko Text, Image, ProgressView, HStack, VStack, ZStack, Gauge
  • Zużycie energii — poniżej 1% baterii na godzinę użytkowania z aktualizacją co 5 minut
  • Dwie aktywności — Island wyświetla do dwóch aktywności jednocześnie po dwóch stronach wycięcia

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również