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 Adoption Statistics, 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 поддерживает три состояния отображения: компактное (compact), минимальное (minimal) и расширенное (expanded). Переход между состояниями анимирован с использованием UIKit-анимаций и Core Animation. Система сама управляет приоритетом активностей: если несколько приложений пытаются отобразить контент одновременно, iOS использует очередь на основе времени старта последней активности.

СостояниеРазмерКонтентПример
Compact49×18 ptИконка приложения + системная иконкаТаймер, музыка, звонок
MinimalДо 66×18 ptИконка + короткий текстНаправления навигации, шаги
ExpandedДо 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, Session 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 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

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