Background Modes في iOS — ما هي، ما أنواع الأوضاع المتاحة والإعداد

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

Background Modes هي مجموعة من الإمكانيات القابلة للتصريح في iOS والتي تسمح للتطبيق بمواصلة تنفيذ الكود بعد الانتقال إلى الخلفية. كل وضع يتوافق مع نوع محدد من المهام: الصوت، تحديد الموقع، VoIP، Bluetooth، الجلب (fetch) والمعالجة (processing). وفقًا لـ Apple، 2026، فإن الاستخدام غير الصحيح لـ Background Modes هو أحد الأسباب الشائعة لرفض التطبيقات أثناء مراجعة App Store.

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

  • Background Modes — مجموعة من إمكانيات iOS للتنفيذ المشروع للكود في الخلفية.
  • وضع الصوت — تشغيل الموسيقى والبودكاست والكتب الصوتية في الخلفية مع التحكم عبر مركز التحكم.
  • تحديد الموقع — تتبع الموقع في الخلفية للملاحة وأجهزة تتبع اللياقة البدنية.
  • Bluetooth — العمل مع أجهزة BLE في الخلفية: أساور اللياقة، أجهزة الاستشعار، الأجهزة الطرفية.
  • مراجعة Apple — الاستخدام غير المشروع للأوضاع يؤدي إلى رفض التطبيق من App Store.

ما هي Background Modes في iOS؟

Background Modes هي إمكانيات مشروع Xcode التي تعلن عن نية التطبيق لتنفيذ أنواع محددة من العمليات في الخلفية. على عكس Android، حيث يمكن للتطبيق تشغيل أي Service في الخلفية، يتطلب iOS تصريحًا صريحًا بالوضع في Info.plist. كل وضع له قواعد استخدام صارمة ويتم التحقق منه بواسطة Apple أثناء المراجعة.

كيف تعمل Background Modes

عندما ينتقل التطبيق إلى الخلفية، يقوم iOS بتعليقه خلال 3–5 ثوانٍ. إذا أعلن التطبيق عن Background Mode واستخدم API المقابل بنشاط (مثل AVAudioSession للصوت)، يقوم النظام بنقله إلى وضع تنفيذ خاص. يبقى التطبيق في الذاكرة ويمكنه تنفيذ كود محدود حسب نوع الوضع.

القائمة الكاملة للأوضاع المتاحة

يدعم iOS Background Modes التالية: Audio (الصوت)، Location (تحديد الموقع)، VoIP، Bluetooth LE (ملحقات BLE)، Background Fetch (التحديثات الدورية)، Background Processing (المهام الطويلة)، External Accessory Communication، Push to Talk (PTT) و HealthKit. كل وضع يتطلب تبريرًا في وصف التطبيق.

الوضعمفتاح Info.plistالغرضإصدار iOS
Audioaudioالصوت في الخلفية، AirPlay4.0+
Locationlocationتتبع الموقع4.0+
VoIPvoipإشعارات VoIP الفورية4.0+
BLEbluetooth-centralالعمل مع أجهزة BLE7.0+
Fetchfetchتنزيل دوري للبيانات7.0+
Processingprocessingمهام خلفية طويلة13.0+
Push to Talkpush-to-talkصوت الدفع للتحدث16.0+

وضع الصوت (Audio و AirPlay و Picture in Picture)

Audio Background Mode هو الوضع الأكثر شيوعًا، المستخدم في مشغلات الموسيقى وتطبيقات البودكاست وخدمات الصوت. يمكن للتطبيق مواصلة تشغيل الصوت، والتحكم به عبر مركز التحكم، والظهور على شاشة القفل. لتنشيطه، يكفي تكوين AVAudioSession بالفئة .playback.

تكوين جلسة الصوت

لكي يعمل الصوت في الخلفية، يجب تكوين AVAudioSession وتنشيطها. الفئة .playback تخبر النظام بأن التطبيق يشغل صوتًا ويجب أن يبقى نشطًا في الخلفية. بدون هذا التكوين، سيتوقف الصوت بعد 5–10 ثوانٍ من تصغير التطبيق.

swift
import AVFoundation

func configureAudioSession() {
    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(
            .playback,
            mode: .default,
            options: []
        )
        try session.setActive(true)
    } catch {
        print("خطأ جلسة الصوت: \(error)")
    }
}

التحكم في التشغيل من مركز التحكم

للتكامل مع مركز التحكم وشاشة القفل، يجب تكوين MPRemoteCommandCenter. يعالج أوامر التشغيل والإيقاف والتالي والسابق. كما يجب تحديث MPNowPlayingInfoProperty لعرض البيانات الوصفية: اسم المقطع، الفنان، الغلاف وتقدم التشغيل.

Picture in Picture للفيديو

اعتبارًا من iOS 14، يدعم Audio Background Mode أيضًا Picture in Picture للفيديو. يمكن للتطبيق مواصلة عرض الفيديو في نافذة عائمة عند تصغيره. للتنشيط، استخدم AVPictureInPictureController مع AVPlayerLayer. يعمل هذا الوضع فقط إذا كان التطبيق يشغل مقطعًا صوتيًا.

تحديد الموقع (تحديثات الموقع)

Location Background Mode يسمح للتطبيق بتلقي تحديثات الموقع في الخلفية. يُستخدم في تطبيقات الملاحة وأجهزة تتبع اللياقة البدنية وتطبيقات التوصيل والشبكات الاجتماعية. بدون هذا الوضع، يتلقى التطبيق الموقع مرة واحدة فقط عند الانتقال إلى الخلفية، ثم تتوقف التحديثات.

أنواع تتبع الموقع

CLLocationManager يدعم عدة استراتيجيات للتتبع: التغييرات الهامة في الموقع، التتبع القياسي، ومراقبة المناطق. للعمل في الخلفية بأقصى دقة، استخدم allowsBackgroundLocationUpdates = true و pausesLocationUpdatesAutomatically = false.

كفاءة الطاقة والدقة

التتبع المستمر للموقع في الخلفية هو من أكثر السيناريوهات استهلاكًا للطاقة. iOS يضبط تلقائيًا تكرار التحديثات حسب سرعة الحركة: عند المشي، تحديثات كل 10–30 ثانية؛ عند القيادة، كل 1–5 ثوانٍ. للملاحة، استخدم desiredAccuracy = kCLLocationAccuracyBestForNavigation.

swift
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.activityType = .fitness
locationManager.startUpdatingLocation()

التغييرات الهامة في الموقع

وضع significant-change location يعمل بدون Location Background Mode — يستيقظ النظام التطبيق فقط عندما تتغير الإحداثيات بشكل كبير (عادة 500 م أو أكثر). لا يتطلب GPS مستمر، مما يوفر البطارية. مناسب لتطبيقات الطقس التي تحدث البيانات عند تحرك المستخدم.

وضع Bluetooth (ملحقات LE)

Bluetooth LE Background Mode يسمح للتطبيق بالتفاعل مع أجهزة BLE في الخلفية. يُستخدم في أساور اللياقة وأجهزة الاستشعار الطبية وأجهزة المنزل الذكي والملاحة بالمنارات. ينقسم الوضع إلى نوعين فرعيين: bluetooth-central (يتصل التطبيق بالأجهزة) و bluetooth-peripheral (يعمل التطبيق كجهاز).

العمل في وضع Central

يمكن للتطبيق الذي يعمل كـ Central مسح الأجهزة BLE والاتصال بها في الخلفية. للقيام بذلك، حدد bluetooth-central في Background Modes واستدع CBCentralManager.scanForPeripherals مع الخيار CBCentralManagerScanOptionAllowDuplicatesKey. في الخلفية، يعمل المسح بتردد منخفض — قد يؤخر النظام الاكتشاف لتوفير الطاقة.

العمل في وضع Peripheral

يمكن للتطبيق الذي يعمل كـ Peripheral الإعلان عن الخدمات والرد على طلبات الأجهزة الأخرى. وضع bluetooth-peripheral يسمح للتطبيق بالبقاء مرئيًا لأجهزة BLE الأخرى حتى في الخلفية. يُستخدم في تطبيقات HealthKit وحلول IoT.

مراقبة المنارات والمناطق

مراقبة iBeacon تعمل في الخلفية دون أذونات إضافية — النظام نفسه يتتبع الدخول والخروج من مناطق Beacon. ولكن لمسح محتوى Beacon (UUID القرب، major، minor) تحتاج إلى إذن Bluetooth و bluetooth-central Background Mode. استخدم CLLocationManager مع CLBeaconRegion للمراقبة.

VoIP و PushKit لتطبيقات الاتصالات

VoIP Background Mode مصمم لتطبيقات الاتصال الصوتي (Skype، Zoom، WhatsApp). يسمح هذا الوضع للتطبيق بالبقاء متصلاً بالخادم لاستقبال المكالمات الواردة. ابتداءً من iOS 8، يُستخدم PushKit — إطار عمل يعالج إشعارات الدفع من خادم VoIP دون إشراك APNs.

PushKit للمكالمات الواردة

PushKit هي الآلية الوحيدة التي تضمن تسليم إشعارات VoIP إلى الجهاز. عند استلام إشعار PushKit، يستيقظ النظام التطبيق، حتى لو كان قد تم إنهاؤه. يجب على التطبيق إنشاء اتصال بالخادم خلال 30 ثانية وعرض إشعار محلي للمكالمة الواردة.

swift
import PushKit

class VoIPHandler: NSObject, PKPushRegistryDelegate {
    func pushRegistry(
        _ registry: PKPushRegistry,
        didReceiveIncomingPushWith payload: PKPushPayload,
        for type: PKPushType,
        completion: @escaping () -> Void
    ) {
        let caller = payload.dictionaryPayload["caller"] as! String
        reportIncomingCall(from: caller)
        completion()
    }
}

قواعد استخدام PushKit

لا يمكن استخدام PushKit للإشعارات العادية — فقط لـ VoIP واتصالات watchOS وموفري الملفات. Apple تتحقق من ذلك أثناء المراجعة. الاستخدام غير المشروع يؤدي إلى رفض التطبيق. ابتداءً من iOS 13، PushKit يسلم الإشعار فقط — استدعاء CXProvider (CallKit) لعرض شاشة المكالمة إلزامي.

أوضاع Fetch و Processing

Background Fetch و Background Processing هما وضعان للتحديثات الخلفية للمحتوى والمهام الطويلة. Fetch للتحديثات الدورية القصيرة (حتى 30 ثانية)، Processing للمهام الطويلة (حتى 10 دقائق) بشروط (Wi-Fi، الشحن). Processing متاح فقط من iOS 13+.

Background Fetch — تحديثات سريعة

وضع Fetch يسمح للنظام بإيقاظ التطبيق دوريًا لتنزيل محتوى جديد. يحلل النظام سلوك المستخدم ويختار الوقت الأمثل. يجب على التطبيق استدعاء completion handler خلال 30 ثانية. Fetch مناسب لتطبيقات الأخبار وتغذيات الشبكات الاجتماعية والطقس.

Background Processing — مهام طويلة

BGProcessingTask مصممة للمهام التي يمكن تنفيذها بدون تدخل المستخدم: تنظيف ذاكرة التخزين المؤقت، مزامنة قاعدة بيانات كبيرة، معالجة ملفات الوسائط. يبدأ النظام المهمة فقط في ظروف مواتية — الجهاز قيد الشحن، متصل بشبكة Wi-Fi، ليس في وضع الطاقة المنخفضة. متاح حتى 10 دقائق.

الجدولة والمتطلبات

لـ BGProcessingTask، يجب تحديد requiresExternalPower و requiresNetworkConnectivity. قد يؤخر النظام التنفيذ إلى أجل غير مسمى إذا لم تتوفر الشروط. على عكس BGAppRefreshTask، الذي يجب تنفيذه مرة واحدة على الأقل يوميًا، قد لا يتم تنفيذ Processing لأسابيع إذا كان الجهاز نادرًا ما يُشحن.

إرشادات مراجعة App Store لـ Background Modes

تراجع Apple بدقة استخدام Background Modes أثناء مراجعة التطبيقات. القاعدة الرئيسية: كل وضع مفعل يجب أن يكون مبررًا بوظائف التطبيق. إذا أعلن التطبيق عن Location Mode لكنه لا يستخدم تحديد الموقع، سيتم رفضه مع طلب إزالة الإمكانية.

الأسباب الشائعة للرفض

أكثر المخالفات شيوعًا: Location Mode بدون حاجة واضحة (يطلب التطبيق الوصول “دائمًا” لعرض الإعلانات)، Audio Mode بدون تشغيل صوت في الخلفية، VoIP بدون PushKit، BLE Mode بدون أجهزة Bluetooth. قد ترفض Apple التطبيق حتى في مرحلة التحديث إذا لم يعد الوضع مستخدمًا.

الوصف في ملاحظات المراجعة

عند الإرسال للمراجعة، قدم تبريرًا محددًا لكل وضع في الملاحظات. على سبيل المثال، “يُستخدم Location Background Mode لتتبع مسار المستخدم في ميزة اللياقة البدنية”. بدون شرح، قد يرفض المراجع التطبيق. للوظائف السرية (VoIP)، قد تطلب Apple حساب اختبار.

توصيات لتقليل الأوضاع

استخدم الحد الأدنى الضروري من الأوضاع. إذا كان تطبيقك يحتاج إلى تنزيل بيانات في الخلفية مرة كل ساعة — لا تفعل Location Mode، استخدم Fetch أو BGAppRefreshTask. الأوضاع الإضافية لا تؤدي فقط إلى الرفض، بل تخلق انطباعًا سلبيًا: يرى المستخدم في الإعدادات أن التطبيق يستخدم تحديد الموقع في الخلفية.

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

كم عدد Background Modes التي يمكن تفعيلها في تطبيق واحد؟

لا يوجد حد للعدد، ولكن كل وضع يجب أن يكون مبررًا بوظائف التطبيق. تفعيل جميع الأوضاع بدون ضرورة هو سبب مضمون للرفض أثناء المراجعة. الحد العملي هو 2–3 أوضاع لكل تطبيق، وإلا سيرى المستخدم العديد من طلبات الأذونات.

كيف أتحقق مما إذا كان Background Mode نشطًا؟

استخدم UIApplication.shared.applicationState — يمكن للتطبيق التحقق مما إذا كان في الخلفية (state == .background). يمكنك أيضًا مراقبة إشعارات UIApplication.didEnterBackgroundNotification و willEnterForegroundNotification لتبديل السلوك.

ما الفرق بين وضعي Audio و AirPlay Background؟

Audio — تشغيل الصوت عبر السماعة أو سماعات الرأس. AirPlay — بث الصوت والفيديو إلى Apple TV وأجهزة AirPlay الأخرى. عمليًا، يغطي Audio Mode كلا السيناريين لأن AirPlay يستخدم جلسة الصوت. لا حاجة لوضع AirPlay منفصل منذ iOS 7+.

هل يمكنني استخدام الموقع في الخلفية فقط عندما يكون التطبيق مفتوحًا؟

نعم، لهذا استخدم requestWhenInUseAuthorization() بدلاً من requestAlwaysAuthorization(). سيتلقى التطبيق الموقع فقط في المقدمة. إذا كنت بحاجة إلى تتبع قصير في الخلفية، استدع startUpdatingLocation() وأوقفه في willResignActive.

كيف تؤثر Background Modes على البطارية؟

كل وضع يزيد من استهلاك الطاقة. Location Mode هو الأكثر استهلاكًا، قد يقلل عمر البطارية بنسبة 30–50% مع التتبع المستمر. Audio Mode معتدل (15–20%). Fetch و Processing ضئيلان (2–5%). BLE Mode منخفض (5–10%) بفضل كفاءة الطاقة في Bluetooth LE.

الخلاصة

  • Background Modes — إمكانيات iOS قابلة للتصريح تسمح للتطبيق بتنفيذ كود بشكل مشروع في الخلفية.
  • Audio Mode — الأكثر شيوعًا، لتشغيل الموسيقى والبودكاست والفيديو عبر AVAudioSession بالفئة .playback.
  • Location Mode — للملاحة واللياقة، الأكثر استهلاكًا للطاقة، يتطلب requestAlwaysAuthorization و allowsBackgroundLocationUpdates.
  • BLE Mode — العمل مع أجهزة Bluetooth في الخلفية عبر CBCentralManager مع مسح خلفي.
  • VoIP و PushKit — لتطبيقات الاتصالات، يضمن تسليم المكالمات الواردة عبر PKPushRegistry.
  • Fetch و Processing — مهام خلفية قصيرة وطويلة بشروط تنفيذ وحدود زمنية مختلفة.
  • Apple تتحقق بدقة من تبرير كل وضع — الاستخدام غير المشروع يؤدي إلى رفض التطبيق من App Store.

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

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

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

اقرأ أيضًا