Dynamic Island: ما هي، الإشعارات التفاعلية في iPhone

المؤلف: IT Sectr نُشر: 2026-02-16 وقت القراءة: 9 دق

Dynamic Island هي منطقة تفاعلية في الجزء العلوي من iPhone 14 Pro والأحدث، تجمع بين فتحة الكاميرا المادية والإشعارات البرمجية في عنصر واجهة واحد. تتكيف Dynamic Island من حيث الشكل والحجم حسب نوع المحتوى: مكالمة، مؤقت، موسيقى، Live Activity، توصيل AirPods. يتفاعل المطورون عبر Dynamic Island API القائمة على ActivityKit وWidgetKit. المزيد على Dynamic Island HIG.

أهم النقاط

  • Dynamic Island — عنصر واجهة برمجي ومادي في iPhone 14 Pro والأحدث
  • ثلاثة أوضاع — مضغوط، أدنى وموسع بأحجام محتوى مختلفة
  • Live Activities — الطريقة الرئيسية للمحتوى المخصص في Dynamic Island
  • الرسوم المتحركة — يدير النظام تلقائياً الانتقالات بين حالات Island
  • أحداث النظام — المكالمات، AirPods، Face ID، الشحن مدمجة في Dynamic Island

ما هي Dynamic Island في iPhone؟

Dynamic Island هي عنصر واجهة في iPhone 14 Pro و15 Pro والأحدث يستخدم المنطقة حول الكاميرا الأمامية ومستشعرات Face ID لعرض الإشعارات وLive Activity. على عكس النوتش القديم، الذي كان عنصراً أسود ثابتاً، تغير Dynamic Island شكلها وحجمها ديناميكياً: تتوسع لعرض مؤقت، تتقلص لأيقونة AirPods متصلة، تتحول إلى مستطيل لنتائج رياضية.

التنفيذ التقني لـ Dynamic Island يعتمد على فتحة المادية على شكل حبة في شاشة OLED ومعالجة البكسل البرمجية حولها. يزيد النظام معدل تحديث البكسل إلى 120 هرتز في منطقة Island ويستخدم تنعيم الحواف للانتقال السلس بين المحتوى والمنطقة السوداء للكاميرا. لا يقوم المطور ببرمجة Island مباشرة — بل ينشئ محتوى عبر ActivityKit، ويضعه النظام حول الفتحة تلقائياً.

تصور المستخدم — تحول Dynamic Island عيباً مادياً إلى عنصر وظيفي. وفقاً لأبحاث Apple، يرى المستخدمون Island كجزء طبيعي من الشاشة بعد أيام قليلة فقط من الاستخدام. الإضاءة والرسوم المتحركة لتحويل الانتباه — على سبيل المثال، إشعار وارد يزيح Island ويعرض المحتوى بتأثير توسع بمعدل 120 إطاراً في الثانية.

أوضاع عرض Dynamic Island

تدعم Dynamic Island ثلاثة أوضاع لعرض المحتوى، يختارها النظام تلقائياً بناءً على نوع وعدد الأنشطة. يحدد المطور واجهة المستخدم لكل وضع في WidgetBundle، لكنه لا يتحكم في الوضع النشط حالياً. يمكن للنظام أيضاً عرض نشاطين في وقت واحد: واحد على يسار الفتحة والآخر على يمينها.

الوضعالحجمالمحتوىمثال
مضغوط~50pt عرضأيقونة + نص قصيرمؤقت: أيقونة ساعة + "05:00"
أدنى~22pt دائريأيقونة التطبيق فقطإشعار لقطة شاشة
موسع~300pt × 80ptSwiftUI View مخصصنتيجة رياضية مع شعارات

الانتقال بين الأوضاع يتم برسوم متحركة للنظام مدتها 0.4–0.6 ثانية بمنحنى ease-in-out. عند ظهور Activity جديدة، تتوسع Island من الوضع المضغوط إلى الموسع. عند الانتهاء، تنكمش مرة أخرى. يمكن للمستخدم طي الوضع الموسع بالقوة بتمريرة إلى اليسار — تنتقل Island إلى الوضع المضغوط أو الأدنى. يقوم النظام أيضاً بطي الوضع الموسع بعد 5 ثوانٍ من عدم النشاط إذا لم تكن هناك تحديثات متوقعة.

نشاطان — إذا كان لتطبيقين Live Activities نشطة، تعرضهما Dynamic Island على جانبي الفتحة. الجانب الأيسر هو أول Activity بدأت، والجانب الأيمن هو الثاني. إذا كان هناك نشاط واحد فقط، فإنه يشغل الجانب الأيسر ويبقى الأيمن فارغاً. عند النقر على أي جانب، تتوسع Island وتعرض محتوى ذلك Activity. يقرر النظام نفسه أي Activity له الأولوية في حالة التعارض.

إنشاء محتوى لـ Dynamic Island

محتوى Dynamic Island يتم إنشاؤه حصرياً عبر Live Activity مع إطار ActivityKit. يحدد المطور أربع مناطق في الكود: مضغوط يسار (compactLeading)، مضغوط يمين (compactTrailing)، أدنى (minimal) وموسع (expanded). كل منطقة هي SwiftUI View تستقبل الحالة الحالية لـ Activity عبر context. إذا لم يتم تعريف منطقة، لا تعرض Island ذلك Activity في الوضع المقابل.

swift
struct DeliveryIsland: DynamicIsland {
    var body: some DynamicIslandContent {
        DynamicIslandExpandedContent {
            VStack(alignment: .leading) {
                Text(context.state.status)
                    .font(.headline)
                ProgressView(
                    value: context.state.progress
                )
                Text("ETA: \(context.state.minutes) min")
                    .font(.caption)
            }
        } compactLeading: {
            Image(systemName: "box.truck")
        } compactTrailing: {
            Text("\(context.state.minutes) min")
                .monospacedDigit()
        } minimal: {
            Image(systemName: "box.truck")
        }
    }
}

قيود SwiftUI في Dynamic Island — المكونات المتاحة: Text، Image، HStack، VStack، ZStack، Spacer، ProgressView، Button (عبر Link فقط)، Gauge. الممنوع: ScrollView، List، TabView، الرسوم المتحركة، gesture recognizers. لوحة الألوان — فقط System Colors (label، secondaryLabel، tint). الخطوط — أحجام النظام من .caption إلى .title3. الخطوط المخصصة وSF Symbols تعمل بشكل صحيح.

اختبار Dynamic Island — يوفر Xcode محاكياً يدعم Dynamic Island. اختر iPhone 14 Pro أو 15 Pro كجهاز مستهدف. تحاكي ActivityKit أوضاع Island المختلفة: زر Dynamic Island Mode في قائمة Debug في Xcode يبدل بين المضغوط والأدنى والموسع. لاختبار Activities متعددة في وقت واحد، استخدم مخططات مع ActivityID مختلفة أو شغل مثيلين من التطبيق.

أحداث النظام في Dynamic Island

أحداث النظام — المكالمات، AirPods، Face ID، الشحن وغيرها — لها أولوية على Live Activities المخصصة. عند حدوث حدث نظام، توقف Island عرض المحتوى المخصص وتعرض محتوى النظام. بعد انتهاء حدث النظام، تعود Island إلى المحتوى المخصص برسوم متحركة. لا يمكن للمطور إلغاء أو تعديل أحداث النظام — فهي تدار على مستوى نظام تشغيل iOS.

حدث النظامتنسيق العرضالأولوية
مكالمة واردةبطاقة أدنى مع اسم جهة الاتصالعالية
AirPodsرسم متحرك + شحن البطاريةمتوسطة
Face IDأيقونة قفلمتوسطة
الشحنأيقونة برق + نسبة مئويةمنخفضة
AirDropتقدم النقلمتوسطة
لقطة شاشةرسم متحرك للغالقمنخفضة

مكالمة واردة — أهم حدث في النظام. تعرض Dynamic Island اسم المتصل يسار الفتحة والمدة/الحالة يميناً. أثناء المكالمة النشطة، لا تعرض Island أي Live Activities مخصصة. يمكن للمستخدم توسيع Island لفتح شاشة المكالمة أو طيه لمواصلة العمل في التطبيق مع المكالمة النشطة في الخلفية.

توصيل AirPods — عند فتح العلبة بالقرب من iPhone، تحرك Dynamic Island الاتصال وتظهر شحن كل سماعة والعلبة. يستمر الرسم المتحرك 2–3 ثوانٍ، وبعدها تعود Island إلى حالتها السابقة. إذا لم يكن لدى المستخدم Live Activities نشطة، تبقى Island فارغة. تعرض AirPods Pro 2 أيضاً مستوى الصوت ووضع إلغاء الضوضاء عند الضغط على الجذع.

أفضل ممارسات التطوير لـ Dynamic Island

أفضل ممارسات Dynamic Island من Apple يُوصى باتباعها لضمان تجربة مستخدم عالية الجودة. يجب أن يعرض الوضع المضغوط فقط أهم المعلومات — أيقونة ورقم واحد أو تسمية قصيرة. الوضع الموسع — فقط المعلومات الرئيسية دون عناصر زائدة. تجنب وضع نص في الوضع المضغوط إذا تجاوز 20 حرفاً — يقطع النظام النص بعلامات حذف.

تحديثات الدفع لـ Dynamic Island — استخدم ActivityKit push للتحديثات النادرة (حالة الطلب، النتائج الرياضية) والتحديثات المحلية للمؤقتات المتكررة أو ساعات الإيقاف. تمر إشعارات الدفع عبر APNs وتستغرق 0.5–2 ثانية للظهور في Island. StaleDate — عيّن تاريخ انتهاء صلاحية المحتوى: إذا لم يصل التحديث في الوقت المحدد، يعرض النظام خلفية رمادية بدلاً من المحتوى، مشيراً للمستخدم إلى بيانات قديمة.

swift
func updateDelivery(activity: Activity<DeliveryAttributes>) {
    Task {
        let newContent = ActivityContent(
            state: DeliveryAttributes.ContentState(
                status: .delivered,
                estimatedMinutes: 0
            ),
            staleDate: Date().addingTimeInterval(300)
        )
        await activity.update(newContent)
        // إنهاء Activity بعد ثانيتين
        try? await Task.sleep(nanoseconds: 2_000_000_000)
        await activity.end(newContent)
    }
}

استهلاك الطاقة — Dynamic Island وLive Activities لهما تأثير ضئيل على البطارية بفضل تحسين أجهزة شاشة OLED. البكسلات السوداء حول الفتحة مغلقة، ويتم عرض المحتوى على معالج مساعد مخصص. متوسط استهلاك Live Activity أقل من 1% من البطارية لكل ساعة استخدام عند التحديث كل 5 دقائق. يوقف النظام Island تلقائياً عند انخفاض البطارية (أقل من 20%) أو في وضع توفير الطاقة.

التصميم لـ Dynamic Island لا يتطلب تكييف واجهة المستخدم الرئيسية للتطبيق — تعمل Island بشكل مستقل عن الشاشة النشطة. يجب أن تتطابق ألوان Live Activity مع سمة النظام (فاتح/داكن) عبر Color Assets النظام. SF Symbols مفضلة على الأيقونات المخصصة — فهي تظهر بشكل صحيح في أي وضع من Island ولها دعم مدمج لـ Dynamic Type.

الأسئلة الشائعة

كيف تبدو Dynamic Island على أجهزة iPhone القديمة؟

Dynamic Island متوفرة فقط على iPhone 14 Pro و14 Pro Max و15 Pro و15 Pro Max والأحدث مع iOS 16.1+. على أجهزة iPhone القديمة ذات النوتش، لا تظهر Dynamic Island — تظهر Live Activity كشعار عادي على شاشة القفل. لا يحتاج المطور إلى كتابة كود مختلف: يكيف النظام نفسه الواجهة حسب إمكانيات الجهاز.

هل يمكن وضع نشاطين Live Activity في Dynamic Island؟

تدعم Dynamic Island عرض نشاطين في وقت واحد — يتم وضعهما يسار ويمين فتحة الكاميرا. إذا كان هناك نشاط واحد فقط، فإنه يشغل الجانب الأيسر ويبقى الجانب الأيمن في حالة مضغوطة. عند النقر على أي جانب، تتوسع Island وتعرض محتوى Activity المقابل.

ما أحداث النظام التي تستخدم Dynamic Island؟

أحداث النظام في Dynamic Island: مكالمة واردة ببطاقة أدنى واسم جهة اتصال، توصيل AirPods برسم متحرك وشحن البطارية، Face ID بأيقونة قفل، شحن الجهاز بنسبة مئوية، وضع المودم، تغيير مستوى الصوت، تفعيل الوضع الصامت، AirDrop مع تقدم النقل ولقطة شاشة برسوم متحركة للغالق.

كيف أضيف دعم Dynamic Island إلى تطبيق؟

لا تتطلب Dynamic Island API منفصلاً — تعرض Live Activities المنشأة عبر ActivityKit مع WidgetKit. يسجل التطبيق Activity بإعداد DynamicIsland، ويحدد SwiftUI Views مضغوطة وأدنى وموسعة. يعرضها النظام تلقائياً في Dynamic Island على الأجهزة المدعومة.

هل هناك قيود على المحتوى في Dynamic Island؟

Dynamic Island محدودة بثلاث حالات بصرية بأحجام مختلفة: مضغوطة حتى 50pt، وأدنى حتى 22pt، وموسعة حتى 300pt. في الوضع المضغوط، لا يُنصح بوضع نص أطول من 20 حرفاً. تتوفر فقط مكونات SwiftUI النظامية — Text، Image، ProgressView، Gauge. الخطوط والألوان المخصصة محدودة بلوحة النظام.

الخلاصة

  • Dynamic Island — منطقة تفاعلية حول فتحة الكاميرا في iPhone 14 Pro والأحدث
  • ثلاثة أوضاع — مضغوط، أدنى وموسع مع انتقالات يديرها النظام
  • Live Activity — الطريقة الوحيدة للمحتوى المخصص عبر ActivityKit وWidgetKit
  • أحداث النظام — المكالمات، AirPods، Face ID، الشحن لها أولوية على المحتوى المخصص
  • قيود SwiftUI — فقط Text، Image، ProgressView، HStack، VStack، ZStack، Gauge
  • استهلاك الطاقة — أقل من 1% بطارية لكل ساعة استخدام مع تحديثات كل 5 دقائق
  • نشاطان — تعرض Island حتى نشاطين في وقت واحد على جانبي الفتحة

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

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

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

اقرأ أيضًا