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 هي أدوات (widgets) على Dynamic Island تعمل عبر إطار ActivityKit (iOS 16.1+).
  • ثلاث حالات: مضغوطة (أيقونة)، بسيطة (حبة)، موسعة (لوحة بمحتوى).
  • ActivityKit هو إطار Swift لنشر Live Activities على Dynamic Island وشاشة القفل.
  • يدعم 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 واجهة Live Activities API، بإضافة دعم للمؤقتات التنازلية ونتائج الرياضة مباشرة في 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. Dynamic Island غير متاح على iPad. يتطلب التطوير لـ Dynamic Island Xcode 14.1+ و iOS 16.1+.

كيف يعمل Dynamic Island: ثلاث حالات

Dynamic Island يدعم ثلاث حالات عرض: مضغوطة (compact)، بسيطة (minimal) وموسعة (expanded). الانتقالات بين الحالات تكون متحركة باستخدام رسوم 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 وشاشة القفل. يستخدم 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). عند بدء 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 ضد 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 (2025)، لا ينبغي استخدام Dynamic Island للإعلانات أو العرض الدائم للمحتوى الثابت. Live Activities مخصصة فقط للمهام الخلفية ذات دورة حياة واضحة: مؤقتات، توصيل، رياضة، موسيقى، ملاحة. انتهاك هذه القواعد يؤدي إلى رفض التطبيق في مراجعة App Store.

دورة الحياة والإيماءات في 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("النشاط نشط على Dynamic Island")
            case .dismissed:
                print("النشاط تم إخفاؤه من قبل المستخدم")
                await activity.end(dismissalPolicy: .immediate)
            case .finished:
                print("النشاط أنهته النظام")
                cleanupResources()
            @unknown default:
                break
            }
        }
    }
}

توصية Apple (WWDC 2024، الجلسة 10146): لا تستخدم Dynamic Island لعرض حالات لا تتطلب انتباه المستخدم. يجب أن يكون لكل Live Activity مشغل بدء وانتهاء واضح. للتحديثات الخلفية بدون واجهة مستخدم، استخدم 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 وأرسل الرمز إلى خادمك. يرسل الخادم طلب تحديث عبر APNs مع ContentState الجديد. البديل هو التحديث المحلي عبر activity.update(using:) من داخل التطبيق نفسه.

كيف أعرض نشاطين في وقت واحد على Dynamic Island؟

يقوم iOS تلقائياً بتقسيم Dynamic Island إلى جزأين عند وجود نشاطين Live Activity نشطين. يُعرض كل نشاط في حالة بسيطة على يسار ويمين الكاميرا. الضغط المطول على أحد الأجزاء يفتح الحالة الموسعة لذلك التطبيق فقط.

لماذا لا يظهر 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+، التي تحل محل القطع الثابت.
  • يدعم ثلاث حالات: مضغوطة، بسيطة وموسعة مع رسوم انتقال سلسة.
  • ActivityKit — إطار Swift لنشر Live Activities على Dynamic Island وشاشة القفل.
  • Live Activities تُحدَّث عبر استدعاءات محلية أو إشعارات push عبر APNs.
  • الإيماءات: النقر للانتقال إلى التطبيق، الضغط المطول لتوسيع اللوحة، السحب للإغلاق.
  • Dynamic Island يدعم حتى نشاطين متزامنين مع تقسيم إلى أجزاء.
  • Apple تقيد استخدام Live Activities فقط بالمهام الخلفية ذات أطر زمنية واضحة.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا