امتدادات التطبيقات والتكاملات النظامية في التطوير المحمول: ما هي، أنواعها وكيف تعمل

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

امتدادات التطبيقات هي وحدات قابلة للتنفيذ منفصلة توسع قدرات التطبيق المحمول خارج واجهته الرئيسية: Today Widget على الشاشة الرئيسية، معالجة مكالمات VoIP عبر CallKit، والتفاعل مع أحداث النظام عبر BroadcastReceiver. التكاملات النظامية تسمح للتطبيق بالتفاعل مع نظام التشغيل على مستوى عميق، مما يفتح وظائف غير متاحة للشاشات العادية. وفقًا لوثائق مطوري Apple، كل امتداد يعمل في عملية معزولة ويدار بواسطة النظام بشكل مستقل عن التطبيق الرئيسي. امتدادات التطبيقات في التطبيق المحمول تسمح بتنفيذ وظائف غير متاحة في العملية الرئيسية.

النقاط الرئيسية

  • امتدادات التطبيقات — ملفات ثنائية منفصلة داخل التطبيق توسع وظائفه خارج العملية الرئيسية
  • CallKit — إطار عمل لدمج مكالمات VoIP في واجهة مكالمات النظام في iPhone
  • BroadcastReceiver — مكون Android يستجيب لرسائل البث النظامية
  • AppWidgetProvider — فئة أساسية لإنشاء الأدوات على Android مع دعم RemoteViews
  • Content Provider — مكون Android لمشاركة البيانات بين التطبيقات عبر ContentResolver

امتدادات التطبيقات على iOS: الأدوات وامتدادات مشاركة المحتوى

ظهرت امتدادات التطبيقات على iOS في iOS 8 وأصبحت أساسًا للتكاملات النظامية في التطوير المحمول. هذه ملفات ثنائية منفصلة معبأة مع التطبيق الرئيسي ولكن يتم تشغيلها في عملية معزولة. لكل امتداد Info.plist خاص به ونقطة دخول محددة عبر NSExtensionPrincipalClass. يدير النظام دورة حياة امتدادات التطبيقات — لا يمكنها البقاء في الخلفية بعد إكمال مهمة.

WidgetKit وToday Widget

WidgetKit (iOS 14+) هو إطار عمل حديث لإنشاء الأدوات على الشاشة الرئيسية. WidgetKit يستخدم SwiftUI لوصف الواجهة وTimelineProvider لتحديد جداول التحديث. تأتي الأدوات بثلاثة أحجام: صغير (2×2 خلية)، متوسط (4×2) وكبير (4×4). الأداة القديمة Today Widget القائمة على UICollectionViewController لا تزال مدعومة، لكن Apple توصي بالترحيل إلى WidgetKit. امتدادات التطبيقات على WidgetKit لا تدعم الرسوم المتحركة أو إدخال لوحة المفاتيح أو الإيماءات — وهي عناصر ثابتة أو شبه متحركة مع تحديثات دورية.

Share Extension وAction Extension

Share Extension يسمح بإرسال المحتوى من أي تطبيق إلى تطبيقك عبر ورقة المشاركة النظامية. Share Extension يستقبل البيانات عبر NSExtensionItem ويستخدم SLComposeServiceViewController لواجهة المستخدم. Action Extension يعالج المحتوى في مكانه — على سبيل المثال، يترجم النص في المتصفح دون الانتقال إلى تطبيق آخر. كلا النوعين يجب أن يكمل العمل في وقت محدود، وإلا فإن النظام "يقتل" الامتداد. هذا قيد مهم لامتدادات التطبيقات في التطبيق المحمول — المهام الخلفية غير متاحة على مستوى الامتداد.

CallKit وPushKit وSiriKit — التكاملات النظامية للصوت والإشعارات

التكاملات النظامية على iOS تتجاوز بكثير الأدوات: CallKit وPushKit وSiriKit تسمح للتطبيق المحمول بالعمل على مستوى النظام. هذه الأطر تتطلب صلاحيات خاصة ولكنها تمنح المستخدم تجربة سلسة — المكالمات عبر CallKit تبدو كمكالمات هاتفية عادية، وSiri تعالج الطلبات دون فتح التطبيق.

CallKit — مكالمات VoIP في واجهة النظام

CallKit يدمج مكالمات التطبيقات الخارجية في شاشة المكالمات النظامية، بما في ذلك الشاشة المقفلة. CXProvider يسجل التطبيق كخدمة VoIP، وCXCallController يدير المكالمات. CallKit يحظر تلقائيًا المكالمات المكررة ويدعم Call Directory Extension لحظر الأرقام غير المرغوب فيها. التكاملات النظامية في التطوير المحمول مع CallKit حيوية لتطبيقات الاتصال الصوتي — WhatsApp وSkype وZoom تستخدمه لعرض المكالمات الواردة.

PushKit — إشعارات الدفع الخلفية

PushKit يوصل إشعارات الدفع مباشرة إلى التطبيق المحمول دون عرضها للمستخدم. PushKit يوقظ التطبيق من حالة "مغلق" ويمرر البيانات عبر المفوض PKPushRegistryDelegate. هذه هي الآلية الأساسية لتطبيقات VoIP: PushKit يوصل معلومات المكالمة، وCallKit يعرضها. PushKit له أولوية توصيل أعلى من إشعارات الدفع العادية ولا يتطلب عرض لافتة. امتدادات التطبيقات في التطبيقات المحمولة غالبًا ما تجمع بين PushKit وCallKit للاتصال الصوتي.

SiriKit وIntents Extension

SiriKit يسمح بمعالجة الطلبات عبر Siri وتطبيق الاختصارات. Intents Extension هو امتداد تطبيق منفصل يسجل النوايا المدعومة ويعالجها. SiriKit يدعم أكثر من 20 مجالًا: المكالمات والرسائل والمدفوعات والملاحظات والتمارين. الاختصارات تسمح للمستخدم بإنشاء أتمتة — على سبيل المثال، "إرسال رسالة في WhatsApp عبر Siri." التكاملات النظامية مع SiriKit والاختصارات تزيد التفاعل لأن المستخدم ينفذ الإجراءات دون فتح التطبيق.

BroadcastReceiver وخدمات النظام على Android

BroadcastReceiver هو مكون Android يستجيب لرسائل البث النظامية. على عكس امتدادات التطبيقات في iOS، BroadcastReceiver لا يتطلب ملفًا ثنائيًا منفصلاً — يكفي تسجيل المستقبل في البيان أو في الكود عبر Context.registerReceiver. التكاملات النظامية على Android غالبًا ما تبدأ بـ BroadcastReceiver: من تشغيل خدمة عند بدء تشغيل الجهاز إلى التفاعل مع اتصال الشبكة.

IntentFilter لأحداث النظام

IntentFilter يربط BroadcastReceiver بحدث نظام محدد. الأحداث النموذجية: BOOT_COMPLETED (بدء تشغيل الجهاز)، CONNECTIVITY_ACTION (تغير الشبكة)، BATTERY_LOW (انخفاض البطارية)، TIME_SET (تغير الوقت). يتم تسجيل المستقبل في AndroidManifest.xml أو عبر Context.registerReceiver للتسجيل الديناميكي. التسجيل الديناميكي أفضل — لا يتطلب أذونات في البيان ويعمل فقط أثناء نشاط التطبيق. امتدادات التطبيقات على Android لا توجد كمفهوم، لكن BroadcastReceiver يؤدي دورًا مشابهًا — يوسع قدرات التطبيق من خلال التكاملات النظامية.

NotificationListenerService وAccessibilityService

NotificationListenerService هي خدمة تستقبل جميع إشعارات النظام. NotificationListenerService يتطلب إذن BIND_NOTIFICATION_LISTENER_SERVICE والوصول عبر إعدادات إمكانية الوصول. AccessibilityService أداة أكثر قوة للتكامل النظامي: يمكنه قراءة محتوى الشاشة ومحاكاة النقرات وأتمتة الإجراءات. كلتا الخدمتين تتطلبان تمكينًا صريحًا من المستخدم في الإعدادات، مما يحسن الأمان. التكاملات النظامية في التطبيقات المحمولة عبر AccessibilityService تستخدم للملء التلقائي وقارئات الشاشة وأدوات إمكانية الوصول.

kotlin
class BootReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        if (intent.action == Intent.ACTION_BOOT_COMPLETED) {
            WorkManager.getInstance(context)
                .enqueueUniqueWork("post-boot", ...)
        }
    }
}

المثال يسجل BroadcastReceiver لحدث BOOT_COMPLETED. WorkManager يستخدم لتنفيذ المهام المؤجلة بعد بدء تشغيل الجهاز — هذا هو النهج القياسي لتطبيقات Android.

App Widget Provider — إنشاء الأدوات على Android

App Widget Provider على Android هو نظير امتدادات التطبيقات في iOS في سياق الأدوات: هو مكون يعرض محتوى تفاعليًا على الشاشة الرئيسية. على عكس WidgetKit، أدوات Android يمكنها قبول إدخال المستخدم — النقرات والمفاتيح والإيماءات. App Widget Provider يسجل في البيان عبر وصف XML للحجم وتكرار التحديث.

RemoteViews وAppWidgetProvider

RemoteViews يصف واجهة الأداة عبر تخطيط XML ويدعم فقط مجموعة محدودة من العناصر. RemoteViews لا يسمح بعناصر مخصصة — فقط المكونات القياسية: TextView وImageView وButton وProgressBar. AppWidgetProvider هو الفئة الأساسية التي تتعامل مع التحديثات والتمكين والحذف للأداة. يتم استدعاء طريقة onUpdate عبر مؤقت باستخدام updatePeriodMillis أو عبر WorkManager للتحكم الدقيق. التكاملات النظامية مع الأدوات على Android تتطلب الحذر — التحديث المتكرر جدًا يستنزف البطارية.

Glance API (Jetpack) — النهج الحديث

Glance API هي مكتبة Jetpack لإنشاء الأدوات باستخدام Kotlin DSL بدلاً من XML. Glance API يتم تجميعها إلى RemoteViews وتدعم بناء جملة مشابه لـ Compose: GlanceComposable وColumn وRow وText. المكتبة تحل مشكلة كود XML المعقد وتسمح باختبار الأدوات عبر JUnit. Glance API لا تدعم بعد جميع ميزات RemoteViews — للأدوات التفاعلية المعقدة، من الأفضل استخدام النهج الكلاسيكي. امتدادات التطبيقات في التطوير المحمول على Android تتطور نحو Glance API، مما يبسط إنشاء وصيانة الأدوات.

Content Provider وFileProvider وتبادل البيانات بين التطبيقات

Content Provider هو مكون Android لمشاركة البيانات المنظمة بين التطبيقات عبر واجهة موحدة ContentResolver. على عكس امتدادات التطبيقات في iOS، Content Provider لا ينشئ عملية منفصلة — يتم طلب البيانات بشكل متزامن في سياق التطبيق الطالب. Content Provider هو أساس التكاملات النظامية على Android: جهات الاتصال وملفات الوسائط والتقويم والتطبيقات القياسية تستخدمه لنشر البيانات.

FileProvider للمشاركة الآمنة للملفات

FileProvider هو فئة فرعية من ContentProvider لنقل الملفات بشكل آمن بين التطبيقات. FileProvider يولد عناوين URI مؤقتة content:// بدلاً من مسارات file:// المباشرة المحظورة على Android 7+. للاستخدام، يجب تحديد files-path أو external-files-path في تكوين XML. امتدادات التطبيقات في التطوير المحمول على Android لا توجد كمفهوم منفصل، لكن FileProvider يؤدي وظيفتها — يوسع قدرات مشاركة البيانات خارج تطبيق واحد.

النظير على iOS: File Provider Extension

على iOS، دور مشاركة الملفات يؤديه File Provider Extension. File Provider Extension ينشر ملفات التطبيق في تطبيق الملفات عبر NSFileProviderManager. على عكس FileProvider، امتداد iOS يتطلب ملفًا ثنائيًا منفصلاً ويعمل في عملية معزولة. File Provider Extension يدعم NSFileProviderItem لوصف الملفات وNSFileProviderEnumerator للتنقل بين المجلدات. التكاملات النظامية في التطبيقات المحمولة عبر File Provider Extension تسمح للمستخدم بإدارة ملفات التطبيق من تطبيق الملفات دون فتحه.

swift
class MyFileProviderExtension: NSFileProviderExtension {
    override func item(for identifier: NSFileProviderItemIdentifier) throws -> NSFileProviderItem {
        return MyFileProviderItem(identifier: identifier)
    }
}

المثال يظهر تنفيذًا أدنى لـ File Provider Extension في Swift. طريقة item(for:) تعيد كائن NSFileProviderItem حسب المعرف — يستدعيها النظام عند عرض الملفات في تطبيق الملفات.

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

ما هي امتدادات التطبيقات على iOS؟

امتدادات التطبيقات هي ملفات ثنائية منفصلة توسع وظائف التطبيق خارج عمليته: Today Widget وShare Extension وAction Extension وKeyboard Extension وأنواع أخرى تعمل في بيئة معزولة.

كيف يختلف CallKit عن PushKit؟

CallKit يدمج مكالمات VoIP في واجهة مكالمات النظام مع العرض على الشاشة المقفلة. PushKit يوصل إشعارات الدفع الخلفية دون عرضها للمستخدم — يوقظ التطبيق لمعالجة البيانات، مثل معلومات عن مكالمة واردة.

ما هو BroadcastReceiver على Android؟

BroadcastReceiver هو مكون Android يستجيب لرسائل البث النظامية: بدء تشغيل الجهاز (BOOT_COMPLETED) واتصال الشبكة (CONNECTIVITY_ACTION) وتغيرات وضع الطيران وأحداث نظام التشغيل الأخرى.

كيف يتم إنشاء أداة على Android؟

استخدم AppWidgetProvider مع RemoteViews لإنشاء واجهة الأداة أو Glance API (Jetpack) لنهج Kotlin DSL. يتم تسجيل الأداة في البيان عبر وصف XML مع تحديد الحجم وتكرار التحديث.

لما يستخدم Content Provider؟

Content Provider هو مكون Android لمشاركة البيانات بين التطبيقات عبر ContentResolver. يستخدم للوصول إلى جهات الاتصال وملفات الوسائط وأي بيانات منظمة من تطبيقات أخرى.

الخلاصة

  • امتدادات التطبيقات — أساس التكاملات النظامية على iOS: الأدوات والمشاركة ومعالجة المحتوى وامتدادات لوحة المفاتيح في عمليات معزولة
  • CallKit وPushKit — زوج من الأطر لمكالمات VoIP: PushKit يوصل البيانات، CallKit يعرض واجهة المكالمة
  • BroadcastReceiver — نظير امتدادات التطبيقات على Android للتفاعل مع أحداث النظام دون ملف ثنائي منفصل
  • AppWidgetProvider — مكون للأدوات على Android مع دعم RemoteViews وGlance API
  • Content Provider وFileProvider — آليات مشاركة البيانات بين التطبيقات على Android عبر ContentResolver
  • File Provider Extension — النظير على iOS لـ FileProvider لنشر الملفات في تطبيق الملفات من عملية معزولة
  • التكاملات النظامية في التطوير المحمول توحد امتدادات التطبيقات وBroadcastReceiver وCallKit وContent Provider في نظام بيئي واحد

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

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

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