קבלת הודעות באפליקציות C++

בחירת פלטפורמה: iOS+‎ Android אינטרנט Flutter Unity C++‎


כדי לקבל הודעות במורד הזרם, כל אפליקציה של לקוח צריכה להטמיע את השיטות ב-API של 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. המכשיר לא התחבר במשך זמן רב, ושרת האפליקציה שלח לאחרונה (ב-4 השבועות האחרונים) הודעה לאפליקציה במכשיר הזה.

    מומלץ שהאפליקציה תבצע סנכרון מלא עם שרת האפליקציה אחרי קבלת הקריאה הזו.