Dynamic Island: co to je, interakce s Dynamic Island

Autor: IT Sectr Publikováno: 2026-02-28 Doba čtení: 9 min

Dynamic Island — interaktivní oblast v horní části iPhone 14 Pro a všech iPhone 15/16, která spojuje oznámení, aktivity na pozadí a systémové indikátory do jedné dynamické zóny. Na rozdíl od tradičního výřezu (notch) Dynamic Island mění tvar a velikost v závislosti na aktuálním kontextu. Podle údajů Apple (WWDC 2024) uživatelé interagují s Dynamic Island v průměru 12krát denně — prostřednictvím dotyků, dlouhých stisků a Live Activities s ActivityKit. Více o animacích v iOS si přečtěte v článku o Corner Radius.

Hlavní body

  • Dynamic Island — softwarově-hardwarové řešení Apple, které nahrazuje výřez interaktivní zónou s proměnnou geometrií.
  • Live Activities — widgety na Dynamic Island pracující přes framework ActivityKit (iOS 16.1+).
  • Tři stavy: kompaktní (ikona), minimální (pilulka), rozšířený (panel s obsahem).
  • ActivityKit — Swift framework pro publikování Live Activities na Dynamic Island a Lock Screen.
  • Dynamic Island podporuje gesta: dotyk pro otevření aplikace, dlouhý stisk pro rozbalení panelu.

Co je Dynamic Island?

Dynamic Island — je interaktivní oblast založená na softwarově-hardwarovém řešení Apple, představená v září 2022 spolu s iPhone 14 Pro. Fyzicky se jedná o výřez ve tvaru pilulky obklopený OLED pixely, které dynamicky mění barvu a tvar. Apple používá kombinaci hardwarového oddílu pro kameru a Face ID s softwarovým renderováním černých oblastí kolem něj, čímž vytváří iluzi „živého" ostrůvku.

Hlavním cílem Dynamic Island je odstranit propast mezi systémovými oznámeními a aktivním obsahem. Místo toho, aby se oznámení objevovala uprostřed obrazovky (jako na Androidu) nebo jako bannery nahoře (jako na starších iOS), Dynamic Island je integruje přímo do hardwarové zóny. To snižuje rozptylování a vytváří pocit jednotného prostoru.

Podle údajů Apple (iOS 17 Adoption Statistics, 2024) je Dynamic Island k dispozici na 38% aktivních iPhone. Počínaje iPhone 15 (2023) všechny modely řady získaly Dynamic Island, včetně základních modelů. V iOS 18 Apple rozšířil API Live Activities a přidal podporu pro odpočítávací časovače a sportovní výsledky přímo na Dynamic Island.

Které modely podporují Dynamic Island

Dynamic Island je k dispozici na 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. Na iPadu Dynamic Island chybí. Pro vývoj s Dynamic Island je vyžadován Xcode 14.1+ a iOS 16.1+.

Jak funguje Dynamic Island: tři stavy

Dynamic Island podporuje tři stavy zobrazení: kompaktní (compact), minimální (minimal) a rozšířený (expanded). Přechod mezi stavy je animován pomocí UIKit animací a Core Animation. Systém sám řídí prioritu aktivit: pokud se několik aplikací pokouší zobrazit obsah současně, iOS používá frontu založenou na čase spuštění poslední aktivity.

StavVelikostObsahPříklad
Compact49×18 ptIkona aplikace + systémová ikonaČasovač, hudba, hovor
MinimalAž 66×18 ptIkona + krátký textNavigační pokyny, kroky
ExpandedAž 364×160 ptPlnohodnotný widget s obsahemSportovní skóre, status taxi

Kompaktní stav — standardní zobrazení Dynamic Island, když je aktivní jeden úkol na pozadí. Zobrazuje se jako zaoblená pilulka s ikonou aplikace vlevo a systémovou ikonou vpravo. Ve výchozím nastavení všechny Live Activities startují v kompaktním stavu.

Minimální stav nastává, když jsou současně aktivní dva nebo více úkolů. Dynamic Island se „rozdělí" na dva samostatné prvky vlevo a vpravo od kamery. Minimální stav umožňuje zobrazit dva nezávislé zdroje informací, například čas příjezdu taxi a aktuální skladbu.

Rozšířený stav se aktivuje dlouhým stiskem na Dynamic Island. V tomto režimu se zobrazuje plnohodnotný widget s přizpůsobitelným obsahem: nadpisy, popisy, stavové pruhy, tlačítka. Rozšířený stav podporuje rolování a interaktivní prvky.

ActivityKit a Live Activities: Swift API

ActivityKit — Swift framework, představený v iOS 16.1, který umožňuje aplikacím publikovat Live Activities na Dynamic Island a Lock Screen. ActivityKit používá architekturu založenou na ActivityView a ActivityAttributes: první definuje typ obsahu, druhý — proměnná data. Framework pracuje ve spojení s WidgetKit, ale na rozdíl od widgetů se Live Activities mohou aktualizovat v reálném čase bez otevření aplikace.

swift
import ActivityKit
import SwiftUI

// Definujeme atributy aktivity
struct DeliveryAttributes: ActivityAttributes {
    public struct ContentState: Codable, Hashable {
        var driverName: String
        var distanceToArrival: Double
        var estimatedMinutes: Int
    }
    var orderNumber: String
}

// Spouštíme Live Activity
func startDeliveryActivity() {
    let initialState = DeliveryAttributes.ContentState(
        driverName: "Alexej",
        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 se aktualizují přes ActivityView, který renderuje SwiftUI obsah pro Dynamic Island. Systém sám určuje, kterou šablonu použít (kompaktní, minimální nebo rozšířenou), v závislosti na velikosti Dynamic Island a počtu aktivit. Pro aktualizaci obsahu zavolejte activity.update(using: contentState). Pro ukončení — activity.end(dismissalPolicy: .immediate).

Dynamická oznámení s Push aktualizacemi

ActivityKit podporuje push aktualizace přes APNs (Apple Push Notification Service). Při startu Live Activity můžete požádat o pushToken a posílat aktualizace ze serveru bez nutnosti spouštět aplikaci na zařízení. Push aktualizace fungují přes activity.pushToken a Activity.pushToStartToken pro vzdálené spuštění Live Activity.

swift
// Aktualizace Live Activity přes Push
func updateActivity(activity: Activity<DeliveryAttributes>) {
    let updatedState = DeliveryAttributes.ContentState(
        driverName: "Alexej",
        distanceToArrival: 1.2,
        estimatedMinutes: 4
    )
    let alertConfiguration = AlertConfiguration(
        title: "Kurier je blízko",
        body: "Alexej dorazí za 4 minuty",
        sound: .default
    )
    await activity.update(
        using: updatedState,
        alertConfiguration: alertConfiguration
    )
}

AlertConfiguration — volitelný parametr, který zobrazuje oznámení nad Dynamic Island při důležitých aktualizacích (například „Kurier dorazil"). Bez AlertConfiguration se obsah aktualizuje bez hlášení, což je vhodné pro stavové pruhy a časovače.

Dynamic Island vs Notch: srovnání

Notch (výřez) — hardwarová zóna iPhone X–13, která obsahuje přední kameru, senzor Face ID a reproduktor. Notch je statický: jeho velikost a tvar se nemění a oznámení se zobrazují pod ním jako standardní bannery. Dynamic Island naopak využívá pixely kolem výřezu k zobrazení obsahu, čímž dělá z hardwarového prvku součást rozhraní.

KritériumDynamic IslandNotch
InteraktivitaPodporuje dotyky, dlouhé stisky, přejetíNení interaktivní
Adaptace obsahuMění tvar podle kontextuStatický, obsah pod výřezem
Live ActivitiesVestavěná podpora přes ActivityKitNe — pouze běžná oznámení
MultitaskingDvě současné aktivity (vlevo a vpravo)Pouze jedna aktivita
DostupnostiOS 16.1+, iPhone 14 Pro a novějšíiOS 11+, iPhone X–13

Podle Apple Human Interface Guidelines (2025) by Dynamic Island neměl být používán pro reklamu nebo trvalé zobrazování statického obsahu. Live Activities jsou určeny pouze pro úkoly na pozadí s jasným životním cyklem: časovače, doručování, sport, hudba, navigace. Porušení těchto pravidel vede k zamítnutí aplikace v App Store Review.

Životní cyklus a gesta Dynamic Island

Dynamic Island má striktní životní cyklus: aktivita začíná požadavkem přes Activity.request(), prochází stavy aktivní/pozastavená/aktualizovaná a končí voláním activity.end(). Systém může aktivitu násilně ukončit při nedostatku paměti (například při spuštění kamery). V tomto případě aplikace obdrží oznámení přes ActivityActivityState.finished.

Gesta Dynamic Island jsou zpracovávána SwiftUI obsahem uvnitř ActivityView. Standardní gesta: dotyk na kompaktní stav otevře aplikaci, dlouhý stisk otevře rozšířený stav, přejetí dolů zavře rozšířený stav. Vlastní gesta se přidávají pomocí SwiftUI modifikátorů (onTapGesture, onLongPressGesture) uvnitř zobrazení aktivity.

Zpracování stavu finished

Když systém ukončí Live Activity (nebo uživatel přejetím odstraní), aplikace by měla zpracovat stav finished pro uvolnění zdrojů. Doporučuje se přihlásit se k odběru Activity.activityStateUpdates a po dokončení odstranit lokální reference na aktivitu.

swift
import ActivityKit

func observeActivityState(activity: Activity<DeliveryAttributes>) {
    Task {
        for await state in activity.activityStateUpdates {
            switch state {
            case .active:
                print("Activity aktivní na Dynamic Island")
            case .dismissed:
                print("Activity skryta uživatelem")
                await activity.end(dismissalPolicy: .immediate)
            case .finished:
                print("Activity ukončena systémem")
                cleanupResources()
            @unknown default:
                break
            }
        }
    }
}

Doporučení Apple (WWDC 2024, Session 10146): nepoužívejte Dynamic Island pro zobrazování stavů, které nevyžadují pozornost uživatele. Každá Live Activity by měla mít jasný spouštěč startu a ukončení. Pro aktualizace na pozadí bez UI používejte Background Tasks, nikoli Live Activities.

Často kladené otázky

Na kterých iPhone funguje Dynamic Island?

Dynamic Island je k dispozici na iPhone 14 Pro, 14 Pro Max a všech modelech iPhone 15 a iPhone 16 (včetně základních verzí). Pro vývoj je vyžadován iOS 16.1+ a Xcode 14.1. Na starších modelech (iPhone X–13) se používá statický výřez notch, který nepodporuje Live Activities.

Čím se Dynamic Island liší od běžného oznámení?

Dynamic Island integruje oznámení do hardwarové zóny obrazovky, aniž by zakrýval obsah. Běžné oznámení se zobrazí jako banner nahoře a po několika sekundách zmizí. Live Activities na Dynamic Island mohou zůstat aktivní hodiny a aktualizovat se v reálném čase (stav doručení, časovač, hudba).

Jak aktualizovat obsah na Dynamic Island bez otevření aplikace?

Použijte push aktualizace přes APNs. Při startu Live Activity zavolejte activity.pushToken a pošlete token na váš server. Server odešle update požadavek přes APNs s novým ContentState. Alternativa — lokální aktualizace přes activity.update(using:) z aplikace samotné.

Jak zobrazit dvě aktivity současně na Dynamic Island?

iOS automaticky rozdělí Dynamic Island na dva segmenty, pokud jsou aktivní dvě Live Activities. Každá aktivita se zobrazí v minimálním stavu vlevo a vpravo od kamery. Při dlouhém stisku jednoho ze segmentů se otevře rozšířený stav pouze této aplikace.

Proč se moje Live Activity nezobrazuje na Dynamic Island?

Zkontrolujte: (1) aplikace má NSSupportsLiveActivities = YES v Info.plist, (2) ActivityAttributes a ContentState implementují Codable a Hashable, (3) verze iOS 16.1+, (4) zařízení podporuje Dynamic Island. Pro simulátor použijte iPhone 14 Pro nebo novější v Xcode.

Shrnutí

  • Dynamic Island — interaktivní zóna iPhone 14 Pro+, nahrazující statický notch.
  • Podporuje tři stavy: kompaktní, minimální a rozšířený s plynulými přechodovými animacemi.
  • ActivityKit — Swift framework pro publikování Live Activities na Dynamic Island a Lock Screen.
  • Live Activities se aktualizují prostřednictvím lokálních volání nebo push oznámení přes APNs.
  • Gesta: dotyk pro přechod do aplikace, dlouhý stisk pro rozbalení panelu, přejetí pro zavření.
  • Dynamic Island podporuje až dvě současné aktivity s rozdělením na segmenty.
  • Apple omezuje použití Live Activities pouze na úkoly na pozadí s jasnými časovými rámci.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také