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

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


כדי לקבל הודעות במורד הזרם, כל אפליקציית לקוח צריכה להטמיע את השיטות (methods) ב-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);

גישה לטוקן הרישום

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

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