Today Widget: ما هو، أنواعه وإنشاء ويدجت الإشعارات

المؤلف: IT Sectr نُشر: 2026-06-15 وقت القراءة: 10 دق

Today Widget هو ملحق iOS يعرض معلومات تفاعلية مباشرة في مركز الإشعارات أو على شاشة «اليوم». يرى المستخدم بيانات محدثة — الطقس، أسعار العملات، التقويم — دون فتح التطبيق الرئيسي. وفقاً Apple WWDC (2025)، زاد استخدام WidgetKit بنسبة 40% بعد إدخال الودجتات التفاعلية في iOS 17. Today Widget يحل مشكلة الوصول السريع إلى المعلومات: نظرة على الشاشة — ويحصل المستخدم على البيانات المطلوبة دون التنقل في التطبيق.

الملامح الرئيسية

  • Today Widget — ملحق iOS لعرض المعلومات في مركز الإشعارات.
  • WidgetKit — إطار عمل حديث لإنشاء الودجتات (iOS 14+).
  • NCWidgetProviding — بروتوكول لملحقات مركز الإشعارات (iOS 8–13).
  • Auto Layout — تكييف الودجت مع أحجام الشاشات المختلفة.
  • Timeline Provider — آلية تحديث البيانات في WidgetKit.

ما هو Today Widget

Today Widget (يُعرف أيضاً بويدجت مركز الإشعارات) هو عنصر واجهة iOS يعرض معلومات موجزة من تطبيق دون تشغيله. يرى المستخدم الودجت عن طريق التمرير لليسار على شاشة القفل أو الشاشة الرئيسية. يمكن للويدجت عرض بيانات ديناميكية — أسعار العملات، آخر الأخبار، حالة المهام، حالة الجهاز.

تاريخياً، ظهر Today Widget في iOS 8 كملحق لمركز الإشعارات تم تنفيذه من خلال إطار عمل مركز الإشعارات. مع iOS 14، قدمت Apple WidgetKit — بنية معاد تصميمها بالكامل تسمح بوضع الودجتات مباشرة على الشاشة الرئيسية. Today Widget بالمفهوم الحديث هو ويدجت WidgetKit موضوع في قسم «اليوم» (قسم الودجتات على يسار الشاشة الأولى).

لماذا تحتاج Today Widget

الهدف الرئيسي هو تقليل وقت الوصول إلى المعلومات. بدلاً من فتح التطبيق والتنقل عبر القوائم وانتظار التحميل، يرى المستخدم البيانات المطلوبة فوراً. وفقاً لـ Apple (2024)، التطبيقات ذات الودجتات تظهر 27% أعلى في تفاعل المستخدمين. حالات استخدام إضافية: إجراءات سريعة (تحديد مهمة كمكتملة)، مراقبة (معدل ضربات القلب، النشاط) وحالة (شحن البطارية، الإشعارات).

WidgetKit ضد NCWidgetProviding

مطور Today Widget لديه طريقتان متاحتان: WidgetKit الحديث (iOS 14+) وملحق NCWidgetProviding القديم (iOS 8–13). يعتمد الاختيار على الحد الأدنى من إصدار iOS المدعوم. WidgetKit موصى به للمشاريع الجديدة، NCWidgetProviding لدعم الأجهزة القديمة.

الخاصيةWidgetKitNCWidgetProviding
الحد الأدنى iOSiOS 14iOS 8
الموضعالشاشة الرئيسية + «اليوم»«اليوم» فقط
الأحجامصغير، متوسط، كبيرحجم ثابت واحد
التفاعليةأزرار ومفاتيح iOS 17+فتح التطبيق فقط
التحديثTimeline ProviderwidgetPerformUpdate
اللغةSwiftUIUIKit

متى تستخدم WidgetKit

إذا كان تطبيقك يدعم iOS 14 والإصدارات الأحدث — استخدم WidgetKit. يوفر إمكانيات غنية: أحجام متعددة، تكوين من خلال intents، إعادة تصميم مع iOS 17 وروابط عميقة. التصريحية في SwiftUI تجعل كود الودجت مضغوطاً وقابلاً للقراءة. يدير Timeline Provider جدول التحديثات تلقائياً مع مراعاة استهلاك الطاقة.

متى تستخدم NCWidgetProviding

فقط إذا كان مطلوباً دعم iOS 9–13. NCWidgetProviding أبسط في التنفيذ — هو UIViewController عادي مع بروتوكول. لكنه محدود: حجم واحد، UIKit فقط، بدون تكوين. توصي Apple بالتبديل إلى WidgetKit حتى للمشاريع القديمة باستخدام availability check: WidgetKit على iOS 14+، NCWidgetProviding كخيار احتياطي.

أنواع Today Widgets

في iOS الحديث، هناك ثلاثة أنواع من الودجتات حسب الغرض الوظيفي. كل نوع يحل مشكلته الخاصة ويتطلب نهجاً مختلفاً لتصميم البيانات والواجهة. التصنيف يساعد في اختيار البنية المناسبة لتطبيقك.

الودجتات المعلوماتية

تعرض معلومات ثابتة أو محدثة دورياً: الطقس، التاريخ، أسعار العملات، حالة الخادم. يتم تحديث البيانات وفقاً لجدول زمني عبر Timeline Provider. لا يتفاعل المستخدم مع الودجت — فقط يقرأ. الودجتات المعلوماتية هي الأبسط في التنفيذ، لا تتطلب معالجة أحداث اللمس وتعمل في الخلفية دون أذونات إضافية.

الودجتات التفاعلية

مع iOS 17، يدعم WidgetKit الأزرار والمفاتيح وأشرطة التمرير في الودجتات. يمكن للمستخدم تنفيذ إجراء — تحديد مهمة، إيقاف الموسيقى مؤقتاً، تشغيل الضوء — دون فتح التطبيق. الودجتات التفاعلية تستخدم App Intents لنقل الإجراءات إلى التطبيق الرئيسي. القيد: فقط على الشاشة الرئيسية، وليس في قسم «اليوم» حتى iOS 18.

الودجتات القابلة للتكوين

يخصص المستخدم البيانات المعروضة من خلال واجهة النظام — يختار مدينة للطقس، حساباً للمالية، فئة للأخبار. يتم التنفيذ من خلال Intents Extension والتكوين في WidgetBundle. الودجتات القابلة للتكوين تزيد من التخصيص وملاءمة المعلومات لكل مستخدم.

إنشاء ويدجت WidgetKit

لنلقِ نظرة على عملية إنشاء Today Widget في SwiftUI باستخدام WidgetKit. سيعرض الودجت سعر الصرف الحالي مع تحديثات تلقائية. WidgetKit يتطلب ثلاثة مكونات: بنية الودجت، Provider مع التكوين، وعرض للعرض.

swift
import WidgetKit
import SwiftUI

@main
struct CurrencyWidget: Widget {
    let kind: String = "CurrencyWidget"

    var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: Provider()) { entry in
            CurrencyWidgetEntryView(entry: entry)
        }
        .configurationDisplayName("Currency Rate")
        .description("Current USD/RUB exchange rate")
        .supportedFamilies([.systemSmall, .systemMedium])
    }
}

Provider مسؤول عن إعداد البيانات للعرض. طريقة getTimeline تنشئ جدول تحديث: التحديث التالي بعد 15 دقيقة. TimelineProvider يضمن أن الودجت يعرض بيانات محدثة دون استقصاء الخادم باستمرار.

swift
struct Provider: TimelineProvider {
    func getSnapshot(in context: Context,
                      completion: @escaping (CurrencyEntry) -> Void) {
        let entry = CurrencyEntry(date: Date(), rate: 92.5)
        completion(entry)
    }

    func getTimeline(in context: Context,
                     completion: @escaping (Timeline<CurrencyEntry>) -> Void) {
        let rate = CurrencyService().fetchRate()
        let entry = CurrencyEntry(date: Date(), rate: rate)
        let nextUpdate = Calendar.current.date(
            byAdding: .minute, value: 15, to: Date()
        ) ?? Date()
        let timeline = Timeline(entries: [entry], policy: .after(nextUpdate))
        completion(timeline)
    }
}

Timeline Provider وتحديث البيانات

Timeline Provider هو الآلية المركزية في WidgetKit لإدارة بيانات Today Widget. بدلاً من التحديثات الدورية بالمؤقت (كما في NCWidgetProviding القديم)، يستخدم WidgetKit مفهوم timeline — سلسلة من الإدخالات بطوابع زمنية. يعرض النظام الإدخال الحالي حتى انتهاء صلاحيته، ثم ينتقل إلى التالي أو يطلب واحداً جديداً.

سياسات التحديث

يدعم Timeline ثلاث سياسات: .after(date) — التحديث التالي في التاريخ المحدد؛ .never — لا يتم تحديث الودجت حتى استدعاء صريح لـ WidgetCenter.reloadAllTimelines؛ .atEnd — التحديث بعد عرض آخر إدخال. لـ Today Widget مع أسعار الصرف، سياسة .after بفاصل 15–30 دقيقة هي الأمثل. كفاءة الطاقة هي ميزة رئيسية لـ WidgetKit: يقوم النظام بتجميع تحديثات جميع الودجتات في نافذة واحدة.

WidgetCenter: التحديث البرمجي

إذا تغيرت البيانات قبل انتهاء صلاحية timeline (على سبيل المثال، قام المستخدم بتحديث السعر في التطبيق)، استدعِ WidgetCenter.shared.reloadTimelines(ofKind: “CurrencyWidget”). سيطلب هذا timeline جديداً من Provider ويحدث العرض. WidgetCenter يسمح أيضاً بإعادة تحميل جميع ودجتات التطبيق بأمر واحد — مناسب بعد مزامنة البيانات.

إرشادات تصميم الودجتات

تفرض Apple متطلبات صارمة لتصميم Today Widget: يجب أن يكون المحتوى مقروءاً بنظرة سريعة، بدون عناصر غير ضرورية وبتسلسل هرمي واضح. انتهاك توصيات HIG (إرشادات واجهة المستخدم البشرية) هو سبب للرفض عند النشر في App Store. ثلاثة مبادئ: القراءة السريعة، الاتساق والتسلسل الهرمي.

القراءة السريعة — مقروء بنظرة واحدة

يقضي المستخدم أقل من ثانية على الودجت. لا تضف أكثر من 3–4 عناصر بيانات. الخط — 11pt كحد أدنى للتسميات، 17pt للقيم. استخدم الخط العريض (Semibold) للأرقام الرئيسية. تجنب التمرير — Today Widget لا يتم تمريره.

التكيف مع الأحجام

يدعم WidgetKit ثلاثة أحجام: صغير (170×170pt)، متوسط (364×170pt)، كبير (364×382pt). لـ Today Widget في قسم «اليوم»، المتوسط هو الخيار الأكثر شيوعاً. تصميم متكيف من خلال EnvironmentValues: غيّر كثافة المعلومات حسب الحجم. صغير — رقم واحد، متوسط — رقم + رسم بياني، كبير — جدول.

دعم الوضع الداكن و Dynamic Type

يجب أن يعرض الودجت بشكل صحيح في السمات الفاتحة والداكنة دون إجراءات إضافية من المطور — يلتقط WidgetKit ألوان النظام تلقائياً. Dynamic Type للودجتات محدود: حجم الخط ثابت ولكن يجب أن يكون مقروءاً. UIColor.label و UIColor.systemBackground هما اللونان الأساسيان للنص والخلفية في كلا السمتين.

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

كيف يختلف Today Widget عن الودجت العادي على الشاشة الرئيسية؟

هو الآن نفس ويدجت WidgetKit. الفرق فقط في الموضع: على الشاشة الرئيسية وفي قسم «اليوم» (يسار الشاشة الأولى). قبل iOS 14، كان Today Widget ملحق NCWidgetProviding منفصلاً يعمل فقط في مركز الإشعارات. الآن هو WidgetKit واحد.

كم مرة يتم تحديث Today Widget؟

لا يقوم WidgetKit بتحديث الودجتات بمؤقت. يحدد المطور الجدول عبر Timeline Provider: إدخالات بطوابع زمنية. يضمن النظام التحديث في الوقت المحدد مع مراعاة توفير الطاقة — قد يتأخر بضع دقائق. الحد الأدنى للفاصل هو 15 دقيقة، لكن Apple توصي بما لا يزيد عن مرة واحدة في الساعة.

هل يمكن إنشاء Today Widget بأزرار تفاعلية؟

نعم، بدءاً من iOS 17، يدعم WidgetKit الأزرار والمفاتيح وأشرطة التمرير من خلال App Intents. تعمل العناصر التفاعلية على الشاشة الرئيسية لـ iPhone و iPad. الدعم في قسم «اليوم» ظهر في iOS 18. لـ iOS 16 والإصدارات الأقدم — فقط فتح التطبيق عند النقر على الودجت.

كم Today Widget يمكن أن يكون في تطبيق واحد؟

لا توجد حدود. يمكن للتطبيق تسجيل أي عدد من الودجتات من خلال WidgetBundle — كل بنوعه وحجمه وتكوينه الخاص. يضيفها المستخدم بشكل فردي. يوصى بما لا يزيد عن 3–5 ودجتات لعدم إرباك اختيار المستخدم.

كيفية اختبار Today Widget على المحاكي؟

WidgetKit مدعوم بالكامل في iOS Simulator. شغّل مخطط target WidgetKit في Xcode — سيظهر الودجت على الشاشة الرئيسية للمحاكي. لاختبار Timeline Provider، استخدم WidgetKit Debug Profile: Xcode → Product → Profile → WidgetKit Debug. تحقق من السلوك الفعلي على جهاز فعلي.

الخلاصة

  • Today Widget — ملحق iOS لعرض المعلومات دون فتح التطبيق.
  • WidgetKit (iOS 14+) — إطار عمل حديث، NCWidgetProviding — قديم للإصدارات الأقدم.
  • ثلاثة أنواع من الودجتات: معلوماتية، تفاعلية (iOS 17+)، قابلة للتكوين عبر Intents.
  • Timeline Provider يدير جدول التحديثات بدلاً من المؤقتات.
  • يجب أن يكون التصميم قابلاً للقراءة السريعة: عناصر قليلة، خط كبير، تكيف مع الحجم.
  • التفاعلية عبر App Intents — أزرار ومفاتيح دون فتح التطبيق.
  • WidgetCenter.shared.reloadTimelines — تحديث برمجي عند تغير البيانات.

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

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

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

اقرأ أيضًا