Silent Push — الجوهر والمهام الخلفية وإعداد التسليم

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

Silent Push هو نوع من إشعارات iOS الدفع يتم تسليمه إلى الجهاز دون أي عرض للمستخدم ودون مرافقة صوتية. الغرض الرئيسي من الإشعار الصامت هو مزامنة البيانات في الخلفية، تحديث المحتوى وتنفيذ مهام قصيرة لا تتطلب انتباه المستخدم. وفقًا لـ Apple Developer Documentation, 2026، Silent Push يُنشِط التطبيق في الخلفية لمدة 30 ثانية لمعالجة البيانات الواردة، بعد ذلك يعيد النظام الجهاز إلى وضع السكون لتوفير عمر البطارية.

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

  • التنشيط الخلفي — Silent Push يُنشِط التطبيق في الخلفية لمدة 30 ثانية لمعالجة البيانات دون تدخل المستخدم.
  • مفتاح content-available — علامة إلزامية في حمولة APNS بقيمة 1 تميز الإشعار الصامت عن العادي.
  • توفير البطارية — يُحسِن النظام تسليم silent push: عند انخفاض شحن البطارية أو في وضع توفير الطاقة، قد يتأخر التسليم أو يُلغى.
  • قيود التكرار — iOS لا يضمن تسليم كل silent push، خاصة عند الإرسال بتردد عالي أو عندما يكون التطبيق في الخلفية.
  • عدم وجود واجهة مستخدم — الإشعار الصامت لا يظهر في مركز الإشعارات، ولا يشغّل صوتًا ولا يزيد شارة التطبيق.

ما هو Silent Push — الجوهر والغرض

Silent Push هو آلية iOS تُسلّم البيانات إلى الجهاز دون أي إشعار مرئي للمستخدم. على عكس الدفع القياسي الذي يظهر لافتة، يشغّل صوتًا ويظهر في مركز الإشعارات، فإن silent push يُيقظ التطبيق في الخلفية وينقل إليه البيانات لمعالجتها. المستخدم لا يعلم أبدًا بتسليم هذه الإشعارات — والنتيجة هي محتوى محدث عند الفتح التالي للتطبيق.

الفرق عن إشعارات الدفع العادية

الفرق الرئيسي يكمن في حمولة JSON: silent push يحتوي على العلامة content-available: 1 ولا يحتوي على alert، sound أو badge. الإشعار القياسي مع alert يظهر دائمًا للمستخدم، بغض النظر عن content-available. Silent push يعمل فقط مع content-available: 1 ودون alert — إذا أضفت alert، فسيظهر النظام الإشعار حتى مع علامة التسليم الخلفي.

متى تستخدم Silent Push

الإشعارات الصامتة لا غنى عنها في السيناريوهات حيث يجب أن تكون البيانات محدثة عند فتح التطبيق، ولكن دون إزعاج المستخدم. أمثلة: تحديث خلفية لقائمة الأخبار، مزامنة الاشتراكات، تنزيل محتوى جديد للوصول خارج الخط، تحديث الويجيتات، إبطال الذاكرة المؤقتة. يُستخدم Silent Push أيضًا لتدفئة التطبيق قبل إجراء متوقع من المستخدم.

كيف يعمل تسليم الإشعارات الصامتة

يختلف تسليم Silent Push بشكل كبير عن الإشعارات العادية ويخضع لقواعد تحسين استهلاك الطاقة. نظام iOS يتلقى طلب الدفع من APNS، يحدد أنه silent push (content-available: 1)، ويقرر إذا كان سيتم تسليمه بناءً على عدة عوامل: مستوى شحن البطارية، وضع توفير الطاقة، تكرار silent pushes السابقة، نشاط التطبيق وحمل وحدة المعالجة المركزية الحالي.

دور Power Nap وأوضاع الخلفية

على الأجهزة مزودة بشريحة Apple M ونظام iOS 15+، يتكامل silent push مع آلية Power Nap، التي تُيقظ الجهاز بشكل دوري للمهام الخلفية. Power Nap يدمج عدة silent pushes في فترة نشاط واحدة، مما يقلل استهلاك الطاقة العام. لا يستطيع المطور التحكم في Power Nap مباشرة — النظام يتخذ القرارات تلقائيًا بناءً على سلوك المستخدم وتاريخ استخدام التطبيق.

نافذة المعالجة مدتها 30 ثانية

عندما يُسلّم النظام silent push، يتلقى التطبيق استدعاء application(_:didReceiveRemoteNotification:fetchCompletionHandler:) في AppDelegate. يجب على المطور استدعاء completion handler خلال 30 ثانية، ممرّرًا النتيجة الصحيحة (UIBackgroundFetchResult). إذا لم تكتمل المعالجة في الوقت المحدد، قد يحد النظام من تكرار silent pushes لهذا التطبيق أو يتوقف عن تسليمها بالكامل.

swift
// معالجة Silent Push في AppDelegate
func application(
    _ application: UIApplication,
    didReceiveRemoteNotification userInfo: [AnyHashable: Any],
    fetchCompletionHandler completionHandler:
    @escaping (UIBackgroundFetchResult) -> Void
) {
    guard let type = userInfo["sync-type"] as? String
    else {
        completionHandler(.failed)
        return
    }

    if type == "news-feed" {
        NewsFeedSyncService().sync { success in
            completionHandler(success ? .newData : .failed)
        }
    } else if type == "cache-invalidate" {
        CacheManager.shared.invalidateAll()
        completionHandler(.newData)
    } else {
        completionHandler(.noData)
    }
}

الفواصل بين عمليات التسليم

Apple لا تنشر فواصل دقيقة بين silent pushes، ولكن بناءً على الاختبارات والوثائق، يُوصى بإرسال لا يزيد عن 2–3 إشعارات صامتة في الساعة لكل جهاز. عند الإرسال بتردد أكبر، يبدأ النظام في تجاهل silent pushes، وتتوقف البيانات عن الوصول. إذا كانت المزامنة الأكثر تكرارًا مطلوبة، فكر في استخدام URLSession مع تكوين خلفي أو VoIP push.

حالات استخدام Silent Push

Silent Push يستخدم في مجموعة واسعة من المهام حيث يجب أن تكون البيانات محدثة دون مشاركة نشطة من المستخدم. دعنا ننظر إلى أكثر حالات الاستخدام فاعلية لهذه الآلية في تطبيقات iOS الحقيقية.

تحديث المحتوى للوصول خارج الخط

تستخدم تطبيقات الأخبار والقراءة والسفر Silent Push لتنزيل محتوى جديد في الخلفية. عندما يفتح المستخدم التطبيق، تكون البيانات قد حمّلت ومتاحة حتى دون اتصال بالإنترنت. هذا النهج يحسّن تجربة المستخدم بشكل جذري — تختفي شاشات التحميل الفارغة ويظهر المحتوى فورًا. يرسل الخادم silent push عند ظهور مقالات جديدة، ويقوم التطبيق بتنزيلها في الخلفية للقراءة خارج الخط.

مزامنة حالة الويجيتات

WidgetKit في iOS يحدث الويجيتات حسب جدول زمني، ولكن للتحديث الفوري بعد تغيير البيانات على الخادم، يستخدم Silent Push. التطبيق في الخلفية يعالج silent push، يحدث مخزن البيانات المحلي للويجيتات ويحدث الخط الزمني إجباريًا عبر WidgetCenter. يرى المستخدم معلومات محدثة على الويجيت دون فتح التطبيق — أسعار الصرف، تحديثات الطقس، حالة التسليم.

إبطال الذاكرة المؤقتة وتنظيف البيانات القديمة

عندما يحدث الخادم بيانات حاسمة (مثل قواعد التسعير، الوظائف المتاحة للمستخدمين premium)، يسمح Silent Push بإبطال الذاكرة المؤقتة المحلية فورًا. عند الفتح التالي، سيقوم التطبيق بتحميل بيانات جديدة من الخادم بدلاً من استخدام الذاكرة المؤقتة القديمة. هذا مفيد خاصة للتطبيقات ذات المحتوى المدفوع أو الاشتراكات.

تحديث الشارة دون إشعار مرئي

في بعض السيناريوهات، يلزم تحديث شارة التطبيق دون عرض إشعار. Silent Push مع حقل badge في الحمولة يسمح بتعيين قيمة العداد المطلوبة دون إزعاج المستخدم بلافتة. على سبيل المثال، تطبيق الدردشة يمكنه تحديث الشارة بعدد الرسائل غير المقروءة دون عرض كل رسالة جديدة كإشعار إذا كان المستخدم بالفعل داخل التطبيق.

إعداد Silent Push: الحمولة والقدرات

لتشغيل Silent Push بشكل صحيح، يلزم إعداد على ثلاثة مستويات: مشروع Xcode، حمولة JSON على الخادم وكود المعالجة في التطبيق. كل مستوى حاسم: تخطي أي خطوة يؤدي إلى تسليم الإشعار كعادي أو عدم تسليمه بالكامل.

تكوين القدرات في Xcode

في Xcode، يجب تفعيل قدرة Push Notifications و Background Modes مع تحديد خيار Remote notifications. Push Notifications تُولّد شهادة لـ APNS، بينما Remote notifications في Background Modes تسمح للنظام بإيقاظ التطبيق عند استلام silent push. بدون Remote notifications، سيتم تسليم silent push ولكن لن ينشط التطبيق في الخلفية ولن تتم معالجة البيانات.

بنية حمولة JSON

حمولة Silent Push يجب أن تحتوي على مفتاح aps مع content-available: 1 ولا يجب أن تحتوي على alert، sound أو badge. الحقول المخصصة تُمرر على نفس مستوى aps وتحتوي على بيانات للمعالجة: نوع العملية، معرّفات الكائنات، البيانات الوصفية. حمولة دون content-available ستعامل كإشعار عادي؛ مع alert، ستكون عادية حتى مع content-available.

json
{
    "aps": {
        "content-available": 1
    },
    "sync-type": "news-feed",
    "last-article-id": "article_8521",
    "priority": "high"
}

المعالجة على جانب العميل

عند استلام silent push، iOS يستدعي application(_:didReceiveRemoteNotification:fetchCompletionHandler:) قبل أن يصبح التطبيق مرئيًا. في هذه الطريقة، يجب تحليل userInfo، تنفيذ العمل المطلوب (طلبات الشبكة، الكتابة في Core Data، تحديث الذاكرة المؤقتة) ودائمًا استدعاء completionHandler مع النتيجة الصحيحة خلال 30 ثانية. عدم استدعاء completionHandler يعتبر خطأً من قبل النظام ويؤثر على تكرار silent pushes المستقبلية.

القيود وأفضل الممارسات

Silent Push ليس قناة موثوقة لتسليم البيانات للعمليات الحاسمة — إنه آلية تحسين، ليس مزامنة مضمونة. يجب على المطور فهم القيود وتصميم النظام بحيث يعمل التطبيق بشكل صحيح مع silent push وبدونه.

قيود التسليم

iOS لا يضمن تسليم كل silent push. قد يؤخر النظام أو يلغي التسليم عندما تكون البطارية منخفضة (أقل من 20%)، في وضع استهلاك الطاقة المنخفض، بعد silent pushes متكررة أو إذا لم يستخدم التطبيق لمدة طويلة. إحصائيات التسليم المتوسطة حسب Apple: حوالي 70–80% من silent pushes تصل خلال 5 دقائق، والباقي قد يتأخر أو يفقد.

توصيات Apple بشأن Silent Push

توصي Apple باتباع عدة قواعد لاستخدام silent push فعال. لا ترسل أكثر من 2–3 silent pushes في الساعة لكل جهاز — تجاوز الحد يؤدي إلى الحظر. استخدم حمولة مضغوطة: حجم الحمولة الأصغر يسرع المعالجة ويقلل حمل الشبكة. استدع دائمًا completionHandler في أسرع وقت ممكن: كلما طالت المعالجة، زادت احتمالية أن يقيد النظام silent pushes في المستقبل.

بدائل Silent Push

للسيناريوهات التي تتطلب تسليمًا مضمونًا أو وقتًا أكبر للمعالجة، فكر في بدائل. VoIP push (PushKit) يضمن التسليم ويمنح وقتًا أكبر، ولكنه مخصص فقط لتطبيقات VoIP. Background fetch (UIApplication background fetch) يبدأ من قبل النظام حسب جدول زمني، ولكن لا يمكن تحريكه من الخادم. WebSocket يحافظ على اتصال مستمر ولكنه يستهلك المزيد من البطارية ولا يناسب جميع أنواع التطبيقات.

المراقبة وتصحيح الأخطاء

لتصحيح Silent Push، استخدم Console.app على Mac وفلتر حسب اسم التطبيق. النظام يسجّل كل silent push بوسم “background task” ويشير إلى ما إذا كانت المعالجة ناجحة. على الجهاز، تحقق عبر Settings → Developer → Background Modes Logging. يتم تتبع الخادم من خلال APNS Feedback Service لتحديد الإشعارات غير المسلّمة.

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

ما الفرق بين Silent Push وإشعار الدفع العادي؟

Silent Push لا يظهر للمستخدم، ولا يشغّل صوتًا ولا يظهر في مركز الإشعارات. هدفه هو تنشيط التطبيق في الخلفية لمزامنة البيانات. الدفع العادي يظهر دائمًا لافتة وقد يحتوي على صوت وشارة.

كم وقت يُمنح لمعالجة Silent Push؟

التطبيق يحصل على 30 ثانية لإكمال المهمة الخلفية. بعد استدعاء completionHandler، يعيد النظام الجهاز إلى وضع السكون. إذا لم يتم استدعاء completionHandler في الوقت المناسب، قد يتوقف النظام عن تسليم silent pushes لهذا التطبيق.

لماذا قد لا يصل Silent Push إلى الجهاز؟

قد يؤخر النظام التسليم عندما تكون البطارية منخفضة، في وضع توفير الطاقة، بعد إرسال متكرر لست أو إذا لم يستخدم التطبيق لمدة طويلة. هذا سلوك طبيعي لـ iOS، وليس له علاقة بأخطاء التنفيذ.

هل يمكن إرسال Silent Push مع إشعار عادي؟

نعم، يمكنك تضمين content-available: 1 مع alert — في هذه الحالة سيظهر الإشعار للمستخدم وسيحصل التطبيق تنشيطًا خلفيًا إضافيًا. ولكن إذا كانت المهمة هي مزامنة خلفية فقط دون عرض، لا يمكن تضمين alert.

كيف اتحقق من معالجة Silent Push بشكل صحيح؟

استخدم Console.app على Mac لعرض سجلات المهام الخلفية. أرسل silent push اختباريًا عبر APNS وتحقق من استدعاء didReceiveRemoteNotification مع completionHandler الصحيح. في Xcode، استخدم المحاكي مع محاكاة وضع الخلفية.

الملخص

  • Silent Push — آلية مزامنة خلفية في iOS تُسلّم البيانات دون عرضها للمستخدم، مُفعّلة التطبيق لمدة 30 ثانية.
  • مفتاح content-available: 1 — علامة إلزامية في حمولة APNS تميز الإشعار الصامت عن العادي؛ يجب غياب alert، sound وbadge.
  • التسليم غير مضمون — iOS يحسن تسليم silent push حسب مستوى البطارية والتكرار ونشاط التطبيق؛ نسبة التسليم الفعلية 70–80%.
  • حالات الاستخدام — تنزيل محتوى خلفي، تحديث الويجيتات، إبطال الذاكرة المؤقتة، مزامنة الاشتراكات، تحديث الشارة.
  • حد التكرار — لا يزيد عن 2–3 silent pushes في الساعة لكل جهاز؛ تجاوز الحد يؤدي إلى حظر التسليم من قبل النظام.
  • iOS قد يؤخر أو يلغي Silent Push عند انخفاض البطارية، في وضع استهلاك الطاقة المنخفض أو بعد خمول طويل للمستخدم.
  • Silent Push — أداة فعالة لتحسين تجربة المستخدم ولكن لا ينبغي استخدامها للإشعارات الحاسمة أو المضمونة.

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

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

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

اقرأ أيضًا