Dynamic Island: що це, взаємодія з Dynamic Island

Автор: IT Sectr Опубліковано: 2026-02-28 Час читання: 9 хв

Dynamic Island — інтерактивна область у верхній частині iPhone 14 Pro та всіх iPhone 15/16, яка об'єднує сповіщення, фонові активності та системні індикатори в єдиній динамічній зоні. На відміну від традиційного вирізу (notch), Dynamic Island змінює форму та розмір залежно від поточного контексту. За даними Apple (WWDC 2024), користувачі взаємодіють з Dynamic Island в середньому 12 разів на день — через дотики, довгі натискання та Live Activities з ActivityKit. Докладніше про анімації в iOS читайте в статті про Corner Radius.

Головне

  • Dynamic Island — програмно-апаратне рішення Apple, яке замінює виріз на інтерактивну зону зі змінною геометрією.
  • Live Activities — віджети на Dynamic Island, що працюють через фреймворк ActivityKit (iOS 16.1+).
  • Три стани: компактний (іконка), мінімальний (пігулка), розширений (панель з контентом).
  • ActivityKit — Swift-фреймворк для публікації Live Activities на Dynamic Island та Lock Screen.
  • Dynamic Island підтримує жести: тап для відкриття застосунку, довге натискання для розкриття панелі.

Що таке Dynamic Island?

Dynamic Island — це інтерактивна область на основі програмно-апаратного рішення Apple, представлена у вересні 2022 року разом з iPhone 14 Pro. Фізично це виріз у формі пігулки, оточений OLED-пікселями, які динамічно змінюють колір та форму. Apple використовує комбінацію апаратного відсіку для камери та Face ID з програмним рендерингом чорних областей навколо нього, створюючи ілюзію «живого» острівця.

Основна мета Dynamic Island — усунути розрив між системними сповіщеннями та активним контентом. Замість того щоб сповіщення з'являлися в центрі екрана (як на Android) або у вигляді банерів зверху (як на старіших iOS), Dynamic Island інтегрує їх прямо в апаратну зону. Це зменшує відволікання та створює відчуття єдиного простору.

Згідно з даними Apple (статистика прийняття iOS 17, 2024), Dynamic Island доступний на 38% активних iPhone. Починаючи з iPhone 15 (2023), всі моделі лінійки отримали Dynamic Island, включаючи базові моделі. У iOS 18 Apple розширила API Live Activities, додавши підтримку таймерів зворотного відліку та спортивних результатів прямо на Dynamic Island.

Які моделі підтримують Dynamic Island

Dynamic Island доступний на 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. На iPad Dynamic Island відсутній. Для розробки під Dynamic Island потрібні Xcode 14.1+ та iOS 16.1+.

Як працює Dynamic Island: три стани

Dynamic Island підтримує три стани відображення: компактний, мінімальний та розширений. Перехід між станами анімований з використанням UIKit-анімацій та Core Animation. Система сама керує пріоритетом активностей: якщо кілька застосунків намагаються відобразити контент одночасно, iOS використовує чергу на основі часу старту останньої активності.

СтанРозмірКонтентПриклад
Компактний49×18 ptІконка застосунку + системна іконкаТаймер, музика, дзвінок
МінімальнийДо 66×18 ptІконка + короткий текстНапрямки навігації, кроки
РозширенийДо 364×160 ptПовноцінний віджет з контентомСпортивний рахунок, статус таксі

Компактний стан — стандартний вигляд Dynamic Island, коли активне одне фонове завдання. Відображається як закруглена пігулка з іконкою застосунку ліворуч та системною іконкою праворуч. За замовчуванням всі Live Activities стартують у компактному стані.

Мінімальний стан виникає, коли активні дві або більше задач одночасно. Dynamic Island «розділяється» на два окремі елементи ліворуч та праворуч від камери. Мінімальний стан дозволяє відображати два незалежних джерела інформації, наприклад час до прибуття таксі та поточний трек.

Розширений стан активується довгим натисканням на Dynamic Island. У цьому режимі відображається повноцінний віджет з налаштовуваним контентом: заголовки, описи, прогрес-бари, кнопки. Розширений стан підтримує прокрутку та інтерактивні елементи.

ActivityKit та Live Activities: Swift API

ActivityKit — Swift-фреймворк, представлений у iOS 16.1, який дозволяє застосункам публікувати Live Activities на Dynamic Island та Lock Screen. ActivityKit використовує архітектуру на основі ActivityView та ActivityAttributes: перший визначає тип контенту, другий — змінювані дані. Фреймворк працює в зв'язці з WidgetKit, але на відміну від віджетів, Live Activities можуть оновлюватися в реальному часі без відкриття застосунку.

swift
import ActivityKit
import SwiftUI

// Визначаємо атрибути активності
struct DeliveryAttributes: ActivityAttributes {
    public struct ContentState: Codable, Hashable {
        var driverName: String
        var distanceToArrival: Double
        var estimatedMinutes: Int
    }
    var orderNumber: String
}

// Запускаємо Live Activity
func startDeliveryActivity() {
    let initialState = DeliveryAttributes.ContentState(
        driverName: "Олексій",
        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 оновлюються через ActivityView, який рендерить SwiftUI-контент для Dynamic Island. Система сама визначає, який шаблон використовувати (компактний, мінімальний або розширений), залежно від розміру Dynamic Island та кількості активностей. Для оновлення контенту викличте activity.update(using: contentState). Для завершення — activity.end(dismissalPolicy: .immediate).

Динамічні сповіщення з Push-оновленнями

ActivityKit підтримує push-оновлення через APNs (Apple Push Notification Service). При старті Live Activity ви можете запитати pushToken та надсилати оновлення з сервера без необхідності запускати застосунок на пристрої. Push-оновлення працюють через activity.pushToken та Activity.pushToStartToken для віддаленого старту Live Activity.

swift
// Оновлення Live Activity через Push
func updateActivity(activity: Activity<DeliveryAttributes>) {
    let updatedState = DeliveryAttributes.ContentState(
        driverName: "Олексій",
        distanceToArrival: 1.2,
        estimatedMinutes: 4
    )
    let alertConfiguration = AlertConfiguration(
        title: "Кур'єр поруч",
        body: "Олексій прибуде через 4 хвилини",
        sound: .default
    )
    await activity.update(
        using: updatedState,
        alertConfiguration: alertConfiguration
    )
}

AlertConfiguration — додатковий параметр, який показує сповіщення поверх Dynamic Island при важливих оновленнях (наприклад, «Кур'єр прибув»). Без AlertConfiguration контент оновлюється безшумно, що підходить для прогрес-барів та таймерів.

Dynamic Island vs Notch: порівняння

Notch (виріз) — апаратна зона iPhone X–13, яка містить фронтальну камеру, датчик Face ID та динамік. Notch статичний: його розмір та форма не змінюються, а сповіщення відображаються під ним у вигляді стандартних банерів. Dynamic Island, навпаки, використовує пікселі навколо вирізу для відображення контенту, роблячи апаратний елемент частиною інтерфейсу.

КритерійDynamic IslandNotch
ІнтерактивністьПідтримує тапи, довгі натискання, свайпиНе інтерактивний
Адаптація контентуЗмінює форму під контекстСтатичний, контент під вирізом
Live ActivitiesВбудована підтримка через ActivityKitНі — тільки звичайні сповіщення
БагатозадачністьДві одночасні активності (ліворуч і праворуч)Тільки одна активність
ДоступністьiOS 16.1+, iPhone 14 Pro та новішіiOS 11+, iPhone X–13

За даними Apple Human Interface Guidelines (2025), Dynamic Island не повинен використовуватися для реклами або постійного відображення статичного контенту. Live Activities призначені тільки для фонових завдань з чітким життєвим циклом: таймери, доставка, спорт, музика, навігація. Порушення цих правил веде до відхилення застосунку в App Store Review.

Життєвий цикл та жести Dynamic Island

Dynamic Island має суворий життєвий цикл: активність починається із запиту через Activity.request(), проходить через стани активна/призупинена/оновлена та завершується викликом activity.end(). Система може примусово завершити активність при нестачі пам'яті (наприклад, при запуску камери). У цьому випадку застосунок отримує сповіщення через ActivityActivityState.finished.

Жести Dynamic Island обробляються SwiftUI-контентом всередині ActivityView. Стандартні жести: тап по компактному стану відкриває застосунок, довге натискання розкриває розширений стан, свайп вниз закриває розширений стан. Кастомні жести додаються через модифікатори SwiftUI (onTapGesture, onLongPressGesture) всередині в'юхи активності.

Обробка стану finished

Коли система завершує Live Activity (або користувач свайпом видаляє її), застосунок повинен обробити стан finished для звільнення ресурсів. Рекомендується підписатися на Activity.activityStateUpdates та видаляти локальні посилання на активність після завершення.

swift
import ActivityKit

func observeActivityState(activity: Activity<DeliveryAttributes>) {
    Task {
        for await state in activity.activityStateUpdates {
            switch state {
            case .active:
                print("Activity активна на Dynamic Island")
            case .dismissed:
                print("Activity прихована користувачем")
                await activity.end(dismissalPolicy: .immediate)
            case .finished:
                print("Activity завершена системою")
                cleanupResources()
            @unknown default:
                break
            }
        }
    }
}

Рекомендація Apple (WWDC 2024, сесія 10146): не використовуйте Dynamic Island для відображення статусів, які не потребують уваги користувача. Кожна Live Activity повинна мати чіткий тригер старту та завершення. Для фонових оновлень без UI використовуйте Background Tasks, а не Live Activities.

Часті запитання

На яких iPhone працює Dynamic Island?

Dynamic Island доступний на iPhone 14 Pro, 14 Pro Max та всіх моделях iPhone 15 та iPhone 16 (включаючи базові версії). Для розробки потрібні iOS 16.1+ та Xcode 14.1. На старіших моделях (iPhone X–13) використовується статичний виріз notch, який не підтримує Live Activities.

Чим Dynamic Island відрізняється від звичайного сповіщення?

Dynamic Island інтегрує сповіщення в апаратну зону екрана, не перекриваючи контент. Звичайне сповіщення з'являється у вигляді банера зверху та зникає через кілька секунд. Live Activities на Dynamic Island можуть залишатися активними годинами та оновлюватися в реальному часі (статус доставки, таймер, музика).

Як оновити контент на Dynamic Island без відкриття застосунку?

Використовуйте push-оновлення через APNs. При старті Live Activity викличте activity.pushToken та надішліть токен на ваш сервер. Сервер надсилає update-запит через APNs з новим ContentState. Альтернатива — локальне оновлення через activity.update(using:) з самого застосунку.

Як відобразити дві активності одночасно на Dynamic Island?

iOS автоматично розділяє Dynamic Island на два сегменти при наявності двох активних Live Activities. Кожна активність відображається в мінімальному стані ліворуч та праворуч від камери. При довгому натисканні на один із сегментів відкривається розширений стан тільки цього застосунку.

Чому мій Live Activity не з'являється на Dynamic Island?

Перевірте: (1) застосунок має NSSupportsLiveActivities = YES в Info.plist, (2) ActivityAttributes та ContentState реалізують Codable та Hashable, (3) версія iOS 16.1+, (4) пристрій підтримує Dynamic Island. Для симулятора використовуйте iPhone 14 Pro або новіший у Xcode.

Підсумки

  • Dynamic Island — інтерактивна зона iPhone 14 Pro+, яка замінює статичний notch.
  • Підтримує три стани: компактний, мінімальний та розширений з плавною анімацією переходів.
  • ActivityKit — Swift-фреймворк для публікації Live Activities на Dynamic Island та Lock Screen.
  • Live Activities оновлюються через локальні виклики або push-сповіщення через APNs.
  • Жести: тап для переходу в застосунок, довге натискання для розкриття панелі, свайп для закриття.
  • Dynamic Island підтримує до двох одночасних активностей з розділенням на сегменти.
  • Apple обмежує використання Live Activities лише фоновими завданнями з чіткими часовими рамками.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також