Dynamic Island: چیست، تعامل با Dynamic Island

نویسنده: IT Sectr منتشر شده: 2026-02-28 زمان مطالعه: 9 دقیقه

Dynamic Island — ناحیه تعاملی در بالای آیفون 14 پرو و تمام آیفون‌های 15/16 است که اعلان‌ها، فعالیت‌های پس‌زمینه و نشانگرهای سیستم را در یک ناحیه پویا یکپارچه می‌کند. برخلاف بریدگی سنتی (notch)، Dynamic Island شکل و اندازه خود را با توجه به زمینه فعلی تغییر می‌دهد. طبق داده‌های اپل (WWDC 2024)، کاربران به طور متوسط 12 بار در روز با Dynamic Island تعامل دارند — از طریق لمس‌ها، فشارهای طولانی و Live Activities با ActivityKit. درباره انیمیشن‌های iOS بیشتر در مقاله Corner Radius بخوانید.

نکات اصلی

  • Dynamic Island — راه‌حل نرم‌افزاری-سخت‌افزاری اپل است که بریدگی را با یک ناحیه تعاملی با هندسه متغیر جایگزین می‌کند.
  • Live Activities — ویجت‌هایی روی Dynamic Island که از طریق فریم‌ورک ActivityKit (iOS 16.1+) کار می‌کنند.
  • سه حالت: فشرده (آیکون)، حداقل (قرص)، گسترده (پنل با محتوا).
  • ActivityKit — فریم‌ورک Swift برای انتشار Live Activities روی Dynamic Island و Lock Screen.
  • Dynamic Island از حرکات پشتیبانی می‌کند: ضربه برای باز کردن برنامه، فشار طولانی برای باز کردن پنل.

Dynamic Island چیست؟

Dynamic Island — یک ناحیه تعاملی مبتنی بر راه‌حل نرم‌افزاری-سخت‌افزاری اپل است که در سپتامبر ۲۰۲۲ همراه با آیفون ۱۴ پرو معرفی شد. از نظر فیزیکی، این یک بریدگی به شکل قرص است که توسط پیکسل‌های OLED احاطه شده و به طور پویا رنگ و شکل خود را تغییر می‌دهد. اپل از ترکیب محفظه سخت‌افزاری دوربین و Face ID با رندر نرم‌افزاری نواحی سیاه اطراف آن استفاده می‌کند و توهم یک «جزیره زنده» را ایجاد می‌کند.

هدف اصلی Dynamic Island از بین بردن شکاف بین اعلان‌های سیستم و محتوای فعال است. به جای ظاهر شدن اعلان‌ها در مرکز صفحه (مانند اندروید) یا به صورت بنر در بالا (مانند iOS قدیمی‌تر)، Dynamic Island آنها را مستقیماً در ناحیه سخت‌افزاری ادغام می‌کند. این کار حواس‌پرتی را کاهش می‌دهد و حس یک فضای واحد را ایجاد می‌کند.

بر اساس داده‌های اپل (iOS 17 Adoption Statistics، ۲۰۲۴)، Dynamic Island روی ۳۸٪ آیفون‌های فعال در دسترس است. از آیفون ۱۵ (۲۰۲۳) به بعد، تمام مدل‌های سری Dynamic Island را دریافت کردند، از جمله مدل‌های پایه. در iOS 18، اپل API Live Activities را گسترش داد و پشتیبانی از تایمرهای شمارش معکوس و نتایج ورزشی را مستقیماً در Dynamic Island اضافه کرد.

کدام مدل‌ها از Dynamic Island پشتیبانی می‌کنند

Dynamic Island در آیفون ۱۴ پرو، آیفون ۱۴ پرو مکس، آیفون ۱۵، آیفون ۱۵ پلاس، آیفون ۱۵ پرو، آیفون ۱۵ پرو مکس، آیفون ۱۶، آیفون ۱۶ پلاس، آیفون ۱۶ پرو، آیفون ۱۶ پرو مکس در دسترس است. در 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: "الکسی ۴ دقیقه دیگر می‌رسد",
        sound: .default
    )
    await activity.update(
        using: updatedState,
        alertConfiguration: alertConfiguration
    )
}

AlertConfiguration — پارامتر اضافی است که هنگام به‌روزرسانی‌های مهم (مثلاً «پیک رسید») اعلانی را روی Dynamic Island نشان می‌دهد. بدون AlertConfiguration، محتوا بی‌صدا به‌روزرسانی می‌شود که برای نوارهای پیشرفت و تایمرها مناسب است.

Dynamic Island در مقابل Notch: مقایسه

Notch (بریدگی) — ناحیه سخت‌افزاری آیفون X–۱۳ است که شامل دوربین جلو، سنسور Face ID و بلندگو می‌شود. Notch ایستا است: اندازه و شکل آن تغییر نمی‌کند و اعلان‌ها در زیر آن به صورت بنرهای استاندارد نمایش داده می‌شوند. Dynamic Island، در مقابل، از پیکسل‌های اطراف بریدگی برای نمایش محتوا استفاده می‌کند و عنصر سخت‌افزاری را به بخشی از رابط تبدیل می‌کند.

معیارDynamic IslandNotch
تعاملی بودنپشتیبانی از ضربه، فشار طولانی، کشیدنتعاملی نیست
سازگاری محتواشکل را بر اساس زمینه تغییر می‌دهدایستا، محتوا زیر بریدگی
Live Activitiesپشتیبانی داخلی از طریق ActivityKitخیر — فقط اعلان‌های معمولی
چندوظیفه‌ایدو فعالیت همزمان (چپ و راست)فقط یک فعالیت
دسترسیiOS 16.1+، آیفون ۱۴ پرو و جدیدترiOS 11+، آیفون X–۱۳

طبق Apple Human Interface Guidelines (۲۰۲۵)، 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
            }
        }
    }
}

توصیه اپل (WWDC 2024، Session 10146): از Dynamic Island برای نمایش وضعیت‌هایی که نیاز به توجه کاربر ندارند استفاده نکنید. هر Live Activity باید دارای یک محرک شروع و پایان مشخص باشد. برای به‌روزرسانی‌های پس‌زمینه بدون رابط کاربری از Background Tasks استفاده کنید، نه Live Activities.

سوالات متداول

Dynamic Island روی کدام آیفون‌ها کار می‌کند؟

Dynamic Island در آیفون ۱۴ پرو، ۱۴ پرو مکس و تمام مدل‌های آیفون ۱۵ و آیفون ۱۶ (شامل نسخه‌های پایه) در دسترس است. برای توسعه به iOS 16.1+ و Xcode 14.1 نیاز است. در مدل‌های قدیمی‌تر (آیفون X–۱۳) از بریدگی ایستای notch استفاده می‌شود که از Live Activities پشتیبانی نمی‌کند.

Dynamic Island چه تفاوتی با اعلان معمولی دارد؟

Dynamic Island اعلان را در ناحیه سخت‌افزاری صفحه ادغام می‌کند بدون اینکه محتوا را بپوشاند. اعلان معمولی به صورت بنر در بالا ظاهر می‌شود و پس از چند ثانیه ناپدید می‌شود. Live Activities در Dynamic Island می‌توانند ساعت‌ها فعال بمانند و در زمان واقعی به‌روزرسانی شوند (وضعیت تحویل، تایمر، موسیقی).

چگونه محتوای Dynamic Island را بدون باز کردن برنامه به‌روزرسانی کنیم؟

از به‌روزرسانی‌های push از طریق APNs استفاده کنید. هنگام شروع Live Activity، activity.pushToken را فراخوانی کرده و توکن را به سرور خود ارسال کنید. سرور یک درخواست به‌روزرسانی از طریق APNs با ContentState جدید ارسال می‌کند. جایگزین — به‌روزرسانی محلی از طریق activity.update(using:) از خود برنامه.

چگونه دو فعالیت را همزمان روی Dynamic Island نمایش دهیم؟

iOS به طور خودکار Dynamic Island را به دو بخش تقسیم می‌کند وقتی دو Live Activity فعال وجود دارد. هر فعالیت در حالت حداقل در سمت چپ و راست دوربین نمایش داده می‌شود. با فشار طولانی روی یکی از بخش‌ها، حالت گسترده فقط همان برنامه باز می‌شود.

چرا Live Activity من در Dynamic Island ظاهر نمی‌شود؟

بررسی کنید: (۱) برنامه دارای NSSupportsLiveActivities = YES در Info.plist است، (۲) ActivityAttributes و ContentState Codable و Hashable را پیاده‌سازی می‌کنند، (۳) نسخه iOS 16.1+، (۴) دستگاه از Dynamic Island پشتیبانی می‌کند. برای شبیه‌ساز از آیفون ۱۴ پرو یا جدیدتر در Xcode استفاده کنید.

خلاصه

  • Dynamic Island — منطقه تعاملی آیفون ۱۴ پرو+ است که جایگزین notch ایستا می‌شود.
  • از سه حالت پشتیبانی می‌کند: فشرده، حداقل و گسترده با انیمیشن انتقال روان.
  • ActivityKit — فریم‌ورک Swift برای انتشار Live Activities در Dynamic Island و Lock Screen.
  • Live Activities از طریق فراخوانی‌های محلی یا اعلان‌های push از طریق APNs به‌روزرسانی می‌شوند.
  • حرکات: ضربه برای رفتن به برنامه، فشار طولانی برای باز کردن پنل، کشیدن برای بستن.
  • Dynamic Island تا دو فعالیت همزمان با تقسیم به بخش‌ها را پشتیبانی می‌کند.
  • اپل استفاده از Live Activities را فقط به وظایف پس‌زمینه با چارچوب زمانی مشخص محدود می‌کند.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید