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

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

إشعارات الدفع هي واحدة من أكثر الطرق فعالية للتفاعل مع المستخدم بعد تثبيت التطبيق. إنها تتيح الإبلاغ عن رسالة جديدة، خصم، تحديث محتوى أو تذكير بسلة مهملة. إشعارات الدفع (push notifications) تعمل من خلال الخدمات السحابية: Firebase Cloud Messaging (FCM) على Android و Apple Push Notification Service (APNS) على iOS. في هذه المقالة سنحلل بنية الإشعارات وأنواعها وعملية الإعداد لكلا المنصتين. لمزيد من التفاصيل — في الوثائق الرسمية لـ FCM.

أهم النقاط

  • FCM — خدمة شاملة لنظامي Android و iOS (عبر وكيل APNS)
  • APNS — خدمة Apple الأصلية لأنظمة iOS، macOS، watchOS
  • الإشعارات الغنية تحتوي على محتوى وسائط (صور، أزرار، صوت) عبر App Extensions
  • Silent Push يقوم بتحديث البيانات في الخلفية دون عرضها للمستخدم
  • Device Token — معرف فريد للجهاز؛ يجب تخزينه وتحديثه على الخادم
  • Notification Channels (Android) و Notification Categories (iOS) — تجميع وتخصيص الإشعارات بواسطة المستخدم

ما هي إشعارات الدفع؟

إشعار الدفع هو رسالة يرسلها الخادم إلى جهاز محمول دون طلب من التطبيق. تمر الرسالة عبر خدمة سحابية (FCM أو APNS) تقوم بتوصيلها إلى الجهاز حتى إذا كان التطبيق مغلقاً. تنقسم الإشعارات إلى نوعين: إشعارات العرض (تظهر للمستخدم) وإشعارات البيانات (تنقل البيانات للمعالجة في الخلفية).

تتضمن بنية إشعارات الدفع ثلاثة مكونات: (1) خادم التطبيق — يرسل طلباً إلى FCM/APNS؛ (2) الخدمة السحابية — توجه الإشعار؛ (3) تطبيق العميل — يستقبل ويعالج الإشعار. يجب أن يعرف الخادم Device Token الخاص بالجهاز لإرسال الإشعار إليه تحديداً. للإرسال الجماعي يُستخدم Topic Subscription — اشتراك الأجهزة في قنوات مواضيعية (أخبار، عروض، طقس).

على كل جهاز، تتم معالجة الإشعارات بواسطة نظام التشغيل: Android — عبر NotificationManager و NotificationChannel، iOS — عبر UNUserNotificationCenter. يمكن للمستخدم تكوين سلوك الإشعارات لكل قناة: السماح بالصوت، اللافتات، العرض على شاشة القفل أو الإيقاف الكامل. التكوين الصحيح للقنوات يزيد من المشاركة ويقلل معدلات إلغاء الاشتراك.

في IT Sectr، نصمم نظام إشعارات الدفع مع مراعاة ميزات المنصة منذ البداية. القرارات الرئيسية: الاختيار بين FCM و APNS المباشر، تنسيق الحمولة، تكرار الإرسال وآلية الاشتراكات. هذا يتجنب المواقف التي لا تصل فيها الإشعارات أو يتم حظرها بواسطة النظام.

FCM مقابل APNS

Firebase Cloud Messaging (FCM) هي خدمة Google متعددة المنصات لتوصيل الإشعارات. تدعم FCM أنظمة Android، iOS، الويب و Flutter. على iOS، تعمل FCM عبر APNS: ترسل FCM طلباً إلى APNS الذي يقوم بتوصيل الإشعار إلى الجهاز. مزايا FCM: واجهة برمجة تطبيقات موحدة لكلا المنصتين، تحليلات مدمجة، اختبار A/B، المواضيع وشرائح الجمهور.

Apple Push Notification Service (APNS) هي خدمة Apple الأصلية. تعمل فقط على أجهزة Apple (iOS، macOS، watchOS، tvOS). تتطلب تفويضاً مباشراً عبر شهادة TLS أو رمز مميز (JWT). توفر APNS زمن وصول ضئيل للتوصيل وتكاملاً مباشراً مع ميزات iOS: PushKit، Notification Service Extension والتنبيهات الحرجة.

الاختيار بين FCM و APNS يعتمد على بنية المشروع. إذا كان التطبيق لنظام iOS فقط — تمنح APNS تحكماً أكبر. إذا كان متعدد المنصات — FCM أكثر ملاءمة بواجهة برمجة تطبيقات موحدة. تستخدم العديد من المشاريع FCM كخدمة رئيسية وتقوم بإعداد PushKit إضافياً لنظام VoIP على iOS. النهج الهجين يسمح بالحصول على أفضل ما في كلا النظامين.

الخاصية FCM APNS
المنصاتAndroid، iOS، الويب، FlutteriOS، macOS، watchOS، tvOS
التفويضمفتاح الخادم (Firebase Console)شهادة TLS أو رمز JWT
الحد الأقصى للحمولة4 كيلوبايت (data)، 2 كيلوبايت (notification)4 كيلوبايت
المواضيعمدمجة (Topic Messaging)لا (تُنفذ على جانب الخادم)
Silent Pushمدعوممدعوم (content-available)
PushKitلانعم (VoIP، الأنشطة المباشرة)
التحليلاتFirebase Analyticsغير مدمجة
التوصيل لجهاز مغلقمحدود (يعتمد على الشركة المصنعة)نعم، عبر PushKit

أنواع الإشعارات (الغنية، الصامتة، التفاعلية)

الإشعارات الغنية (Rich Notification)

الإشعار الغني هو إشعار لا يحتوي على نص فقط بل أيضاً على محتوى وسائط: صور، فيديو، صوت وأزرار إجراءات. على Android يُنفذ عبر أنماط NotificationCompat: BigPictureStyle (صورة كبيرة)، BigTextStyle (نص مطوي/ممتد)، InboxStyle (قائمة رسائل)، MediaStyle (التحكم في التشغيل). على iOS يُستخدم Notification Content Extension — هدف منفصل بواجهة مستخدم مخصصة للإشعار الموسع.

الإشعارات الصامتة (Silent Push)

Silent Push (content-available على iOS) هو إشعار يتم توصيله دون عرضه للمستخدم. مخصص للتحديث الخلفي للبيانات: مزامنة المحتوى، التحميل المسبق، تحديث الأدوات. على iOS، يتطلب Silent Push تفعيل Background Modes → Remote notifications. على Android يُستخدم FirebaseMessagingService مع onMessageReceived لمعالجة الإشعارات الخلفية. مهم: على iOS، Silent Push له قيود على التكرار ولا يضمن التوصيل إذا كان التطبيق ليس في المقدمة.

الإشعارات التفاعلية (Interactive Notification)

الإشعار التفاعلي يسمح للمستخدم بتنفيذ إجراء دون فتح التطبيق. على Android تكون هذه أزراراً (Action) في الإشعار: "رد"، "موافقة"، "رفض". يتم معالجة الإجراءات عبر PendingIntent الذي يشغل BroadcastReceiver أو Service. على iOS، Notification Action يتم تسجيله عبر UNNotificationAction و UNNotificationCategory. يمكن أن تكون الأزرار foreground (فتح التطبيق)، background (تنفيذ في الخلفية) أو destructive (إجراء لا رجعة فيه — حذف، حظر).

Notification Content Extension و Service Extension

Notification Content Extension (iOS) — وحدة تحكم عرض مخصصة لعرض محتوى الإشعار الموسع عند الضغط المطول أو 3D Touch. Notification Service Extension (iOS) — وسيط لتعديل محتوى الإشعار قبل العرض: فك تشفير رسائل E2E، تحميل الصور، إخفاء البيانات السرية. على Android لا توجد نظائر مباشرة — جميع التعديلات تتم في FirebaseMessagingService.

إعداد الإشعارات على Android و iOS

الإعداد على Android

لنظام Android تحتاج إلى: (1) إضافة Firebase SDK إلى المشروع (google-services.json)؛ (2) إنشاء NotificationChannel (Android 8+) لكل فئة إشعارات؛ (3) تنفيذ FirebaseMessagingService لاستقبال الرموز والرسائل الواردة. Notification Channel إلزامي — بدونه لن تظهر الإشعارات على Android 8+. القنوات لها أولوية (IMPORTANCE_HIGH — صوت + نافذة منبثقة، IMPORTANCE_LOW — بدون صوت) ويمكن للمستخدم تكوينها في إعدادات النظام.

الإعداد على iOS

لنظام iOS تحتاج إلى: (1) تفعيل إمكانية Push Notifications في Xcode؛ (2) إعداد مفتاح APNS على Apple Developer Portal؛ (3) طلب التفويض عبر UNUserNotificationCenter.requestAuthorization — هذا حوار نظام يظهر مرة واحدة. استجابة المستخدم حرجة: إذا لم يتم منح الإذن، لن يتم توصيل الإشعارات. يُوصى بشرح سبب الحاجة للإشعارات للمستخدم قبل إظهار حوار النظام (pre-permission prompt).

الأدوات والرمز المميز

Device Token (iOS) و Registration Token (Android) هما معرفان فريدان للجهاز لإشعارات الدفع. يتم إنشاء الرمز عند أول تشغيل للتطبيق وقد يتغير: عند إعادة التثبيت، مسح البيانات، إعادة تعيين إعدادات الخصوصية. يجب على الخادم تحديث الرموز بانتظام. توفر Firebase واجهة برمجة تطبيقات ملائمة لإدارة الرموز عبر onNewToken، بالإضافة إلى لوحة إرسال إشعارات اختبارية (Firebase Console → Cloud Messaging).

Topic Subscription هي إحدى أكثر آليات FCM فعالية. الجهاز يشترك في موضوع (مثل "news"، "promo_users_ios")، ويقوم الخادم بإرسال الإشعارات حسب الموضوع دون الحاجة لتخزين قائمة الرموز. Firebase Topics تدعم حتى مليون مشترك لكل موضوع وإرسال شرطي (Condition) عبر لغة تعبير: "'news' in topics && ('US' in topics || 'UK' in topics)".

Notification Payload هي بنية JSON المرسلة عبر FCM/APNS. لـ FCM: notification منفصل (الجزء المرئي — عنوان، نص، صورة) و data (حقول مخصصة للتطبيق). لـ APNS: قاموس aps مع alert، badge، sound، category و content-available. البنية الصحيحة للحمولة حرجة: إذا وصل notification + data في وقت واحد، قد لا يتلقى التطبيق في الخلفية البيانات. يُوصى باستخدام رسائل data فقط لنظام Android وتمرير الحقول المرئية بشكل منفصل عبر FCM Console.

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

ما الفرق بين FCM و APNS؟

FCM (Firebase Cloud Messaging) هي خدمة Google لنظام Android والإشعارات متعددة المنصات. APNS (Apple Push Notification Service) هي خدمة Apple فقط لأنظمة iOS/macOS. يمكن لـ FCM توصيل الإشعارات عبر APNS على iOS، حيث تعمل كخادم وكيل.

ما هو الإشعار الغني (Rich Notification)؟

الإشعار الغني هو إشعار محسّن بمحتوى وسائط: صور، فيديو، صوت، أزرار إجراءات. على iOS يُنفذ عبر Notification Content Extension؛ على Android عبر BigPictureStyle و InboxStyle.

كيف يعمل Device Token؟

Device Token هو معرف فريد للجهاز لإرسال إشعارات الدفع. على Android هو Registration Token من FCM؛ على iOS هو Device Token من APNS. قد يتغير الرمز عند إعادة تثبيت التطبيق أو إعادة تعيين الإعدادات، لذلك يجب تحديثه على الخادم.

ما هو Silent Push وما فائدته؟

Silent Push (إشعار صامت) هو إشعار دون عرضه للمستخدم. يُستخدم للتحديث الخلفي للبيانات: مزامنة المحتوى، تحديث الأدوات، التحميل المسبق. على iOS يتطلب تفعيل Background Modes → Remote notifications.

كيف يختلف PushKit عن إشعارات الدفع العادية؟

PushKit هو إطار عمل Apple لتوصيل الإشعارات عالية الأولوية المستخدم في تطبيقات VoIP (المكالمات، المراسلة). PushKit يوصل الإشعار حتى إذا كان التطبيق مغلقاً ويضمن تشغيل التطبيق للمعالجة.

ملخص

  • FCM — خدمة Google متعددة المنصات؛ APNS — خدمة Apple الأصلية
  • Rich Notification يتضمن وسائط وأزراراً؛ Silent Push يحدث البيانات دون عرضها للمستخدم
  • Notification Channel (Android) و Notification Category (iOS) — إلزاميان لتجميع الإشعارات
  • Device Token — معرف فريد؛ يجب تحديثه بانتظام على الخادم
  • Topic Subscription يبسط الإرسال الجماعي دون تخزين قائمة الرموز
  • PushKit — للإشعارات الحرجة (VoIP، التنبيهات الحيوية)
  • Notification Payload يجب أن يكون منظماً حسب المنصة: notification + data لـ FCM، aps لـ APNS

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

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

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