Firebase Cloud Messaging

كيفية التعامل مع إخطار FCM في تطبيقات Android ذات الخلفية

نظرة عامة

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

بعد إعداد FCM في تطبيق Android ، يمكنك استخدام وحدة Firebase لإرسال الإشعارات. عندما يتلقى التطبيق الأمامي إشعارًا ، يتم استدعاء أسلوب onMessageReceived. يجب عليك تجاوز هذه الطريقة للتعامل مع الإشعار ، ولكن المشكلة هي عندما يكون التطبيق في الخلفية ويتلقى إخطارًا ، ويقوم الإشعار بتسليمه إلى علبة النظام بالجهاز ولا يمكنك التعامل مع الإشعار باستخدام طريقة onMessageReceived. عندما ينقر المستخدم على إشعار ، يفتح مشغل التطبيق افتراضيًا. على سبيل المثال ، ضع في اعتبارك أنك تريد القيام بمهمة محددة عند تلقي إشعار للمستخدم أو القيام بشيء في الخلفية دون أن يدرك المستخدم أو لا يريد عرض مربع حوار إعلام للمستخدم ، لا يمكنك القيام بذلك عندما يكون التطبيق backgrounded. في هذه المقالة نريد شرح الحل.

أنواع الرسائل

مع FCM ، يمكنك إرسال نوعين من الرسائل إلى العملاء:

  • رسالة إعلام ، يتم التفكير فيها أحيانًا على أنها "رسالة عرض"
  • رسالة البيانات ، والتي يتم معالجتها بواسطة تطبيق العميل

وفقًا لمستندات Google ، تحتوي رسالة الإعلام على حد 2 كيلو بايت ومفاتيح مرئية مسبقًا للمستخدم. تتيح رسائل البيانات للمطورين إرسال ما يصل إلى 4 كيلو بايت من أزواج قيمة المفتاح المخصصة.

بناءً على نوع الرسالة ، يحدث الحدث التالي:

لذا ، إذا كنت ترغب في التعامل مع الإشعار عند وضع التطبيق في الخلفية ، فيجب إرسال رسالة بيانات واستخدام طريقة onMessageReceived.

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

بهذه الطريقة يجب أن ترسل سلسلة JSON إلى خادم FCM. لرسائل الإعلام استخدم مفتاح الإشعار. فيما يلي مثال على رسالة إشعار JSON:

لإرسال رسائل البيانات ، استخدم مفتاح البيانات. هنا مثال على رسالة بيانات JSON:

و JSON لكلاهما يشبه:

إعداد بروتوكول HTTP FCM

في هذا القسم ، نتعرف على كيفية إعداد بروتوكول FCM HTTP لتمرير الرسائل من خادم التطبيقات إلى تطبيقات العميل عبر FCM. يجب أن يوجه خادم التطبيق جميع طلبات HTTP إلى نقطة النهاية هذه:

https://fcm.googleapis.com/fcm/send

تحتاج أيضًا إلى API KEY لإرسال الرسائل ، يمكنك العثور على API KEY في المسار التالي:

FCM Console -> الإعدادات -> المراسلة السحابية -> مفتاح الخادم

بعد إنشاء سلسلة JSON المنسقة ، يجب عليك إرسال طلب http إلى عنوان URL لخادم FCM.

إليك مقتطف C # لإرسال الرسائل إلى خادم FCM:

استنتاج

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

يوجد مشروع على Github باسم "Espionage". حاولت التحكم في كاميرا جهاز Android عن بُعد والميكروفون والمواقع وغيرها مع خدمة FCM في الخلفية دون أي نشاط. هنا هو رابط هذا المشروع:

https://github.com/shayantabatabaee/Espionage

شكرا للقراءة. لمساعدة الآخرين ، يرجى النقر فوق ❤ للتوصية بهذه المقالة إذا وجدت أنها مفيدة.