تلقّي الرسائل باستخدام "المراسلة عبر السحابة الإلكترونية من Firebase"

يوضّح هذا الدليل كيفية إعداد Firebase Cloud Messaging في تطبيقات العميل على الأجهزة الجوّالة والويب حتى تتمكّن من تلقّي الرسائل بشكل موثوق.

لتلقّي الرسائل الواردة، يجب أن ينفّذ كل تطبيق عميل الطرق في واجهة برمجة التطبيقات firebase::messaging::Listener.

إعداد FCM

قبل أن تتمكّن من استخدام FCM للوصول إلى رمز التسجيل أو تلقّي الرسائل، يجب تهيئته.

لبدء FCM، عليك استدعاء ::firebase::messaging::Initialize وتزويده بكائن ::firebase::App بالإضافة إلى تنفيذ الفئة ::firebase::messaging::Listener.

MyListener my_listener_implementation;
::firebase::messaging::Initialize(app, &my_listener_implementation);

الوصول إلى رمز التسجيل

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

يمكنك الوصول إلى قيمة الرمز المميّز من خلال الدالة الافتراضية ::firebase::messaging::Listener::OnTokenReceived.

void OnTokenReceived(const char* token) {
  LogMessage("The registration token is `%s`", token);

  // TODO: If necessary send token to application server.
}

تلقّي الرسائل والتعامل معها

لتلقّي الرسائل، يجب أن تنفّذ فئة Listener الدالة الافتراضية OnMessage.

تجاهل OnMessage

من خلال إلغاء طريقة ::firebase::messaging::Listener::OnMessage، يمكنك تنفيذ إجراءات استنادًا إلى الرسالة المستلَمة والحصول على بيانات الرسالة:

void OnMessage(const ::firebase::messaging::Message& message) {
  LogMessage(TAG, "From: %s", message.from.c_str());
  LogMessage(TAG, "Message ID: %s", message.message_id.c_str());
}

يمكن أن تمثّل الرسائل أنواعًا مختلفة من البيانات الواردة. في معظم الحالات، يتم إرسال الرسائل إلى التطبيق بعد أن يبدأها المطوّر. يتم أيضًا إرسال رسائل إلى تطبيقك لتمثيل أحداث الرسائل المرسَلة وأحداث أخطاء إرسال الرسائل وأحداث الرسائل المحذوفة. يمكن التمييز بين هذه الأحداث الخاصة من خلال التحقّق من الحقل Message::message_type.

تم حذف الرسائل

يتم إرسال هذا الرمز إلى تطبيقك عندما يحذف خادم FCM الرسائل المعلّقة. سيصبح Message::message_type هو "deleted_messages". قد يتم حذف الرسائل للأسباب التالية:

  1. تم تخزين عدد كبير جدًا من الرسائل على خادم FCM.

    يمكن أن يحدث ذلك عندما ترسل خوادم أحد التطبيقات مجموعة من الرسائل غير القابلة للتصغير إلى خوادم FCM عندما يكون الجهاز غير متصل بالإنترنت.

  2. لم يتصل الجهاز بالإنترنت لفترة طويلة، وأرسل خادم التطبيق رسالة إلى التطبيق على هذا الجهاز مؤخرًا (خلال الأسابيع الأربعة الماضية).

    ويُنصح التطبيق بإجراء مزامنة كاملة مع خادم التطبيق بعد تلقّي هذا الطلب.