FCM — ما هو، مبادئ Firebase Cloud Messaging في التطوير

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

FCM (Firebase Cloud Messaging) هي خدمة متعددة المنصات من Google لتوصيل الإشعارات الفورية ونقل البيانات بين الخادم والتطبيقات المحمولة. وهي تدعم Android وiOS ومنصات الويب من خلال API موحد. وفقًا لـ توثيق Firebase، يعالج FCM أكثر من مليار رسالة يوميًا حول العالم.

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

  • FCM هي خدمة متعددة المنصات من Google لإرسال الإشعارات الفورية والبيانات
  • الهندسة — يتلقى العميل رمز تسجيل، ويرسل الخادم الرسائل عبر Firebase Connection Server
  • أنواع الرسائل — notification (عرض تلقائي) و data (معالجة كاملة في التطبيق)
  • التوصيل — يستخدم FCM اتصالاً مستمرًا أو قوائم انتظار ذات أولوية لضمان التوصيل
  • التكامل — الإعداد عبر Firebase SDK، تكوين google-services.json وتكوين الخادم

ما هو FCM؟

Firebase Cloud Messaging (FCM) هي خدمة سحابية من Google تضمن توصيلاً موثوقًا للإشعارات الفورية ورسائل البيانات إلى الأجهزة المحمولة. كانت تُعرف سابقًا باسم Google Cloud Messaging (GCM)، وأصبحت FCM الأداة الرئيسية للإشعارات متعددة المنصات في نظام Firebase البيئي.

تختار FCM تلقائيًا قناة التوصيل المثلى حسب المنصة: على Android تستخدم اتصال FCM الخاص بها؛ على iOS تستخدم APNS (من خلال بوابة FCM). لا يحتاج المطور إلى تنفيذ تكاملين مختلفين — FCM تتولى التوجيه.

توفر الخدمة REST API موحد و Admin SDK لإرسال الرسائل. يتيح ذلك إرسال الإشعارات من جانب الخادم دون الارتباط بمنصة محددة للمستلم.

القدرات الرئيسية لـ FCM

تدعم FCM عدة أوضاع للتوصيل: رسالة واحدة إلى جهاز معين، بث جماعي حسب الموضوع، و إرسال مجزأ حسب الشروط. كما يتوفر الإرسال المجدول واختبار A/B لمحتوى الإشعارات.

كيف يعمل Firebase Cloud Messaging؟

تعتمد بنية FCM على ثلاثة مكونات: تطبيق العميل، Firebase Connection Server، وخادم التطبيق. يسجل العميل في FCM عند بدء التشغيل ويتلقى رمز تسجيل فريدًا — سلسلة تحدد الجهاز لهذا التطبيق.

يرسل خادم التطبيق طلبًا إلى REST API الخاص بـ FCM، مع تحديد رمز المستلم أو الموضوع. يقوم Firebase Connection Server بتوصيل الرسالة باستخدام اتصال XMPP مستمر أو طلب HTTP. إذا كان الجهاز غير متصل، يتم وضع الرسالة في قائمة الانتظار وتوصيلها عند استعادة الاتصال.

يضمن FCM التوصيل باستخدام قوائم انتظار ذات أولوية وآلية تأكيد. على Android، يتم تخزين الرسالة لمدة تصل إلى 28 يومًا في قائمة الانتظار؛ على iOS، حتى 4 أسابيع (عبر APNS). بعد انتهاء الصلاحية، يتم حذف الرسالة دون إشعار.

دورة حياة رمز FCM

يمكن أن يتغير رمز التسجيل في عدة حالات: عند استعادة بيانات التطبيق، أو عند التحديث إلى إصدار جديد، أو عند مسح ذاكرة التخزين المؤقت. يجب على التطبيق تنفيذ FirebaseMessagingService.onNewToken لمعالجة تحديثات الرمز والمزامنة مع الخادم.

أنواع رسائل FCM

يدعم FCM نوعين من الحمولة: notification و data. يحدد كل نوع كيف ومتى تتم معالجة الرسالة على جهاز المستلم.

المعاملNotificationData
العرض التلقائينعم، إذا كان التطبيق في الخلفيةلا، فقط في التطبيق
المعالجةالنظام — في الخلفية؛ التطبيق — في المقدمةدائمًا في التطبيق (onMessageReceived)
الحد الأقصى للحجم4 كيلوبايت4 كيلوبايت
المفاتيح المخصصةمحدودة بالحقول المحددة مسبقًاأي أزواج مفتاح-قيمة
يتطلب CollapseKeyاختيارياختياري للتجميع

من الناحية العملية، يوصى باستخدام رسائل data عندما يحتاج التطبيق إلى معالجة كاملة للإشعار في onMessageReceived. رسائل notification مناسبة للسيناريوهات البسيطة حيث يكون العرض التلقائي كافيًا.

FCM و APNS: مقارنة الأساليب

FCM و APNS هما الخدمتان الرئيسيتان لتوصيل الإشعارات الفورية. تعمل FCM كبوابة متعددة المنصات، بينما APNS مخصصة فقط لنظام Apple البيئي. تكمن الاختلافات الرئيسية في البنية ومتطلبات الشهادات وآليات التوجيه.

  • متعددة المنصات — FCM تدعم Android و iOS و Web؛ APNS فقط iOS و macOS و watchOS و tvOS
  • المصادقة — FCM تستخدم Server Key أو OAuth 2.0؛ APNS تستخدم شهادة أو Token-based (مفتاح p8)
  • أولوية الرسالة — FCM لديها normal/high؛ APNS لديها immediate/power-efficient consideration
  • الموضوعات — FCM تدعم الاشتراك في الموضوعات مباشرة؛ APNS تتطلب منطق خادم

يعتمد الاختيار بين FCM و APNS المباشر على بنية المشروع. للتطبيقات متعددة المنصات، FCM هي الخيار الأمثل. للمشاريع التي تعمل فقط على iOS، العمل المباشر مع APNS عبر API HTTP/2 مقبول.

متى تختار FCM بدلاً من APNS المباشر

FCM مبررة عندما يستخدم المشروع Android و iOS في وقت واحد، وكذلك عندما تكون هناك حاجة لتحليلات Firebase أو اختبار A/B للإشعارات أو الموضوعات دون منطق خادم. APNS المباشر مفضل للتطبيقات التي تعمل فقط على iOS مع تبعيات قليلة ومتطلبات صارمة لزمن الوصول.

دمج FCM في Android

لتوصيل FCM بتطبيق Android، تحتاج إلى إضافة Firebase SDK وتكوين google-services.json في جذر المشروع. بعد تسجيل الرمز، يصبح التطبيق جاهزًا لاستقبال الرسائل عبر FirebaseMessagingService.

kotlin
// build.gradle (Module)
dependencies {
    implementation("com.google.firebase:firebase-messaging:24.1.0")
}

// AndroidManifest.xml
<service android:name=".MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

class MyFirebaseMessagingService :
    FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        sendTokenToServer(token)
    }

    override fun onMessageReceived(message: RemoteMessage) {
        message.notification?.let {
            showNotification(it.title, it.body)
        }
    }
}

بعد الإعداد، يتلقى التطبيق تلقائيًا رمز FCM عند التشغيل الأول. يجب إرسال الرمز إلى خادم التطبيق لإرسال الإشعارات لاحقًا إلى هذا الجهاز.

إعداد قناة لإشعارات FCM

على Android 8+، قبل إرسال إشعار FCM بعرض تلقائي، يجب إنشاء NotificationChannel. تستخدم رسائل notification من FCM معرف القناة الافتراضي، ولكن يُنصح بإنشاء قناة مخصصة عبر FirebaseMessagingService عند استلام الرسالة الأولى. رسائل data لا تتطلب قناة — يقرر التطبيق بنفسه كيف ومتى يعرض الإشعار.

دمج FCM في iOS

على iOS، يعمل FCM كوسيط بين خادم التطبيق و APNS. يتلقى Firebase الرسالة من الخادم، ويغلفها بتنسيق APNS ويرسلها عبر بوابة Apple. يحتاج المطور إلى تكوين مفتاح أو شهادة APNS في وحدة تحكم Firebase.

swift
import FirebaseMessaging
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        FirebaseApp.configure()
        UNUserNotificationCenter.current().delegate = self

        Messaging.messaging().delegate = self
        return true
    }
}

extension AppDelegate: MessagingDelegate {
    func messaging(
        _ messaging: Messaging,
        didReceiveRegistrationToken fcmToken: String?
    ) {
        UserDefaults.standard.set(fcmToken, forKey: "fcm_token")
    }
}

على iOS، يتم التسجيل في APNS بشكل غير متزامن. يحصل SDK FCM تلقائيًا على رمز APNS ويرسله إلى خادم Firebase. يتم تشغيل didReceiveRegistrationToken عند استلام رمز FCM جديد، والذي يجمع بين رمز APNS ومعرف المشروع.

التحقق من حالة التوصيل

يوفر FCM وحدة تحكم Firebase لمراقبة التوصيل: عدد الإشعارات المرسلة والمستلمة والمعروضة. يتوفر أيضًا استدعاء الحالة عبر Firebase Cloud Functions لتتبع أخطاء التوصيل على جانب الخادم. المقاييس الرئيسية: مرات الظهور وفتح الإشعارات.

أفضل ممارسات FCM

عند العمل مع FCM، من المهم اختيار نوع الرسالة المناسب لكل سيناريو. للإشعارات البسيطة مع العرض التلقائي، استخدم رسائل notification. للحالات التي يحتاج فيها التطبيق إلى معالجة البيانات قبل العرض، استخدم رسائل data. النوع المختلط (notification + data) موصى به فقط إذا كانت البيانات مطلوبة للتحليلات وليس لتغيير محتوى الإشعار.

قم بإدارة الرموز مركزيًا. قم بتخزين الرموز الحالية على الخادم في جدول مرتبط بالمستخدم والمنصة. نفذ آلية تنظيف الرموز القديمة: عند مواجهة خطأ NotRegistered أو InvalidRegistration، احذف الرمز من قاعدة البيانات. نادرًا ما تتغير الرموز، لكن تنظيفها عنصر إلزامي في دعم FCM.

استخدم مفاتيح التجميع (collapseKey) لتجميع الرسائل. إذا كنت ترسل إشعارات متعددة من نفس النوع (على سبيل المثال، "تحديث سعر العملة")، قم بتعيين نفس collapseKey. سيقوم FCM بتوصيل آخر رسالة فقط من المجموعة، مما يقلل الحمل على الجهاز ويتجنب إغراق المستخدم بالإشعارات.

راقب التوصيل عبر Firebase Console و Cloud Functions. تُظهر تحليلات FCM عدد الإشعارات المرسلة والمستلمة والمعروضة. إذا كانت نسبة العرض أقل من 70%، تحقق من إعدادات القنوات على Android وأذونات iOS. غالبًا ما يرتبط ضعف التوصيل بالقنوات المعطلة أو حظر الإشعارات. خامسًا: استخدم اختبار A/B من Firebase لتحسين نص الإشعارات ووقت الإرسال — فهذا يزيد من نسبة فتح الإشعارات بنسبة 15–25% وفقًا لبيانات Firebase.

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

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

FCM هو التحديث التطوري لـ GCM (Google Cloud Messaging). FCM يقدم إعدادًا مبسطًا عبر Firebase Console، وتحليلات مدمجة، وموضوعات، ودعم Web Push. تم إيقاف GCM رسميًا في أبريل 2019، ويجب ترحيل جميع المشاريع إلى FCM.

كم عدد الرسائل التي يمكن إرسالها عبر FCM مجانًا؟

Firebase Cloud Messaging هي خدمة مجانية بدون حدود على عدد الرسائل. يتم فرض رسوم فقط على استخدام خدمات Firebase الأخرى مثل Cloud Functions أو Firestore. لا يتطلب FCM اشتراك Spark أو Blaze للإرسال الأساسي للإشعارات.

لماذا قد يتغير رمز FCM؟

يتغير رمز FCM عند: استعادة التطبيق من نسخة احتياطية، أو مسح بيانات التطبيق، أو إعادة التثبيت، أو التحديث إلى إصدار جديد مع تغيير Sender ID. تعامل دائمًا مع onNewToken في FirebaseMessagingService لإرسال الرمز الجديد إلى الخادم.

هل يعمل FCM في الصين؟

FCM من Google محظور في الصين. لتوصيل الإشعارات في الصين، تُستخدم خدمات بديلة: Huawei Push Kit و MiPush (Xiaomi) و Oppo Push و Vivo Push. للتوصيل متعدد المنصات، تُستخدم خدمات متعددة المزودين مثل Getui.

كيف تتحقق من أن FCM مهيأ بشكل صحيح؟

استخدم وحدة تحكم Firebase المدمجة: اختر "Cloud Messaging" — "Send Test Message". أدخل رمز اختبار وأرسل رسالة notification. يجب أن يظهر الإشعار على الجهاز. يمكنك أيضًا مراقبة سجلات FirebaseMessagingService.onMessageReceived.

الخلاصة

  • FCM هي خدمة سحابية متعددة المنصات من Google لتوصيل الإشعارات الفورية والبيانات
  • الرمز هو معرف فريد للجهاز يستخدم لإرسال الرسائل المستهدفة
  • Notification هو نوع رسالة مع عرض تلقائي من النظام في وضع الخلفية
  • Data هو نوع رسالة مع حمولة كاملة تتم معالجتها فقط داخل التطبيق
  • الموضوعات هي آلية بث جماعي تعتمد على الاشتراك في الموضوعات دون تخزين الرموز على الخادم
  • بوابة APNS — بالنسبة لـ iOS، يعمل FCM كوسيط يعيد توجيه الرسائل عبر APNS
  • مجاني — FCM لا يفرض رسومًا على عدد الرسائل المرسلة

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

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

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

اقرأ أيضًا