הודעה שלא ניתן לכווץ היא הודעה שמועברת למכשיר בנפרד. הודעה שלא ניתן לכווץ אותה מכילה תוכן שימושי. הודעה שניתן לכווץ, כמו 'פינג' ללא תוכן לאפליקציה לנייד כדי ליצור קשר עם השרת ולאחזר נתונים.
דוגמאות לשימוש בהודעות שלא ניתן לכווץ הן הודעות צ'אט או הודעות קריטיות. ב-Android, יש מגבלה של 100 הודעות שאפשר לאחסן בלי לכווץ אותן. אם מגיעים למגבלה, כל ההודעות שנשמרו נמחקות. כשהמכשיר חוזר למצב אונליין, הוא מקבל הודעה מיוחדת שמציינת שהגעתם למגבלה. לאחר מכן האפליקציה יכולה לטפל במצב, בדרך כלל על ידי בקשת סנכרון מלא משרת האפליקציה.
הודעה שניתן לכווץ היא הודעה שאולי תוחלף בהודעה חדשה אם היא עדיין לא נמסרה למכשיר.
תרחיש שימוש נפוץ בהודעות שניתן לכווץ: הודעות שמשמשות כדי להורות לאפליקציה לנייד לסנכרן נתונים מהשרת. דוגמה לכך היא אפליקציית ספורט שמעדכנת את המשתמשים בתוצאה האחרונה. רק ההודעה האחרונה רלוונטית.
כדי לסמן הודעה כהודעה שאפשר לכווץ ב-Android, צריך לכלול את הפרמטר collapse_key במטען הייעודי (payload) של ההודעה. כברירת מחדל, מפתח הצמצום הוא שם חבילת האפליקציה
שרשום במסוף Firebase. שרת FCM יכול לאחסן בו-זמנית ארבע הודעות שונות שניתנות לכיווץ לכל מכשיר, לכל אחת מהן יש מפתח כיווץ שונה. אם חורגים מהמספר הזה, FCM שומר רק ארבעה מפתחות של צמצום, בלי לקבוע אילו מפתחות יישמרו.
הודעות בנושאים ללא מטען ייעודי (Payload) ניתנות לכיווץ כברירת מחדל. הודעות התראה תמיד ניתנות לצמצום, והמערכת תתעלם מהפרמטר collapse_key.
באיזו מהן כדאי להשתמש?
הודעות שניתן לכווץ הן האפשרות המועדפת מבחינת ביצועים, בתנאי שהאפליקציה לא צריכה להשתמש בהודעות שלא ניתן לכווץ. עם זאת, אם משתמשים בהודעות שניתנות לכיווץ, חשוב לזכור ש-FCM מאפשרת שימוש במקסימום ארבעה מפתחות כיווץ שונים על ידי FCM לכל טוקן רישום בכל זמן נתון.
| שימוש בתרחיש | איך שולחים | |
|---|---|---|
| לא ניתן לכווץ | כל הודעה חשובה לאפליקציית הלקוח וצריך להעביר אותה. | חוץ מהודעות התראה, כל ההודעות לא ניתנות לכיווץ כברירת מחדל. |
| ניתן לכיווץ | אם יש הודעה חדשה יותר שהופכת הודעה ישנה יותר שקשורה אליה ללא רלוונטית לאפליקציית הלקוח, FCM מחליף את ההודעה הישנה יותר. לדוגמה: הודעות התראה לא עדכניות. | מגדירים את הפרמטר המתאים בבקשת ההודעה:
|