כדי לקבל הודעות פשוטות במורד הזרם, כל אפליקציית לקוח צריכה להטמיע את השיטות ב-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. }
קבלה וטיפול בהודעות
כדי לקבל הודעות, צריך להטמיע את הפונקציה הווירטואלית OnMessage
במחלקה Listener.
שינוי מברירת המחדל של 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"
. הודעות עשויות להימחק בגלל:
יש יותר מדי הודעות שמאוחסנות בשרת FCM.
מצב כזה יכול לקרות כששרתים של אפליקציה שולחים המון הודעות שלא ניתן לכווץ לשרתים של FCM בזמן שהמכשיר במצב אופליין.
המכשיר לא היה מחובר במשך זמן רב ושרת האפליקציה שלח לאחרונה (במהלך 4 השבועות האחרונים) הודעה לאפליקציה במכשיר הזה.
מומלץ שהאפליקציה תבצע סנכרון מלא עם שרת האפליקציה אחרי קבלת הקריאה הזו.