המטרה שלנו היא תמיד למסור כל הודעה שנשלחת באמצעות FCM. עם זאת, שליחת כל הודעה לפעמים פוגעת בחוויית המשתמש הכוללת. במקרים אחרים, אנחנו צריכים להגדיר גבולות כדי לוודא ש-FCM מספק שירות שניתן להתאמה לכל השולחים. סוגי המגבלות והמכסות שמתוארים בקטע הזה עוזרים לנו לאזן בין הגורמים החשובים האלה.
הגבלת קצב העברת ההודעות במורד הזרם
ב-HTTP v1 API הוספנו מכסות לכל פרויקט ולכל דקה לשליחת הודעות במורד הזרם. מכסת ברירת המחדל של 600,000 הודעות לדקה מספיקה ליותר מ-99% ממפתחי FCM, תוך שמירה על יציבות המערכת וצמצום ההשפעה של פרויקטים עם עומס נקודתי.
דפוסי תנועה לא סדירים יכולים לגרום לשגיאות שקשורות לחריגה מהמכסה. אם חורגים מהמכסה, המערכת מחזירה את קוד הסטטוס 429 RESOURCE_EXHAUSTED (QUOTA_EXCEEDED) של HTTP עד שהמכסה מתמלאת מחדש בדקה הבאה. יכול להיות שיוחזרו גם תשובות 429 במצבי עומס יתר, ולכן מומלץ מאוד לטפל בתשובות 429 בהתאם להמלצות שפורסמו.
חשוב לזכור:
- המכסה במורד הזרם מתייחס להודעות ולא לבקשות.
- שגיאות לקוח (קוד סטטוס של HTTP 400-499) נספרות (לא כולל 429).
- המכסות הן לדקה, אבל הדקות האלה לא מסונכרנות עם השעון.
מכסת ניטור
אפשר לראות את המכסות, השימוש והשגיאות במסוף Google Cloud:
נכנסים למסוף Google Cloud.
לוחצים על APIs & Services.
ברשימת הטבלאות, בוחרים באפשרות Firebase Cloud Messaging API.
לוחצים על QUOTA & SYSTEM LIMITS.
שליחת בקשה להגדלת המכסה
לפני ששולחים בקשה להגדלת המכסה, חשוב לוודא:
- השימוש שלכם הוא בדרך כלל ≥ 80% מהמכסה במשך 5 דקות רצופות לפחות ביום.
- שיעור השגיאות בצד הלקוח נמוך מ-5%, במיוחד בזמן שיא התנועה.
- אתם פועלים לפי השיטות המומלצות לשליחת הודעות בהיקף גדול.
אם אתם עומדים בקריטריונים האלה, אתם יכולים לשלוח בקשה להגדלת המכסה עד 25% במסוף Google Cloud, באמצעות:
- נכנסים לדף QUOTA & SYSTEM LIMITS.
- בטבלה, בוחרים בשורה Send requests per minute.
- לוחצים על הכפתור עריכה.
- פועלים לפי ההוראות כדי לשלוח את הבקשה.
FCM נשתדל מאוד למלא את הבקשה (אין אפשרות להבטיח הגדלה).
אם אתם צריכים מכסה גדולה יותר של הודעות במורד הזרם בגלל השקה קרובה או אירוע זמני, אתם צריכים לשלוח בקשה להגדלת המכסה דרך התמיכה של Firebase. כדי שיהיה מספיק זמן לטפל בבקשה, שלחו אותה לפחות 15 ימים מראש. אם מדובר בבקשות גדולות (יותר מ-18 מיליון הודעות בדקה), צריך להודיע לפחות 30 יום מראש. אנחנו יכולים לאשר רק 2 אירועים של מכסות זמניות בשנה. המשך הכולל של המכסה הזמנית לאורך השנה לא יכול להיות יותר מ-30 ימים. הדרישות בנוגע ליחס שגיאות הלקוח והשיטות המומלצות עדיין חלות על בקשות להשקות ולאירועים מיוחדים.
מידע נוסף זמין במאמר מכסות ב-FCM.
מגבלות על הודעות בנושאים והגבלת קצב של הפצה
פרטים נוספים זמינים במאמר בנושא מכסות ומגבלות של הודעות בנושאים.
ויסות קצב של הודעות שניתן לכווץ
כפי שמתואר בקטע הודעות שניתן לכווץ, הודעות שניתן לכווץ הן התראות ללא תוכן שנועדו להתכווץ זו על גבי זו. אם מפתח חוזר על אותה הודעה באפליקציה בתדירות גבוהה מדי, אנחנו מעכבים את ההודעות כדי לצמצם את ההשפעה על הסוללה של המשתמש.
לדוגמה, אם אתם שולחים מספר גדול של בקשות חדשות לסנכרון אימייל למכשיר אחד, יכול להיות שנעכב את הבקשה הבאה לסנכרון אימייל בכמה דקות כדי שהמכשיר יוכל להסתנכרן בקצב ממוצע נמוך יותר. ההגבלה הזו מתבצעת אך ורק כדי לצמצם את ההשפעה על הסוללה שהמשתמש חווה.
אם תרחיש השימוש שלכם דורש דפוסי שליחה של פרצי תנועה גבוהים, יכול להיות שהודעות לא מצומצמות הן הבחירה הנכונה. בהודעות כאלה, חשוב לכלול את התוכן כדי להפחית את עלות הסוללה.
אנחנו מגבילים את ההודעות שניתן לכווץ ל-20 הודעות בבת אחת לכל אפליקציה בכל מכשיר, עם אפשרות להוסיף הודעה אחת כל 3 דקות.
קצב ההודעות המקסימלי למכשיר אחד
ב-Android, אפשר לשלוח עד 240 הודעות לדקה ו-5,000 הודעות בשעה למכשיר יחיד. הסף הגבוה הזה נועד לאפשר פרצי תנועה קצרים, למשל כשמשתמשים מתקשרים במהירות בצ'אט. המגבלה הזו מונעת שגיאות בלוגיקת השליחה, שעלולות לרוקן את הסוללה במכשיר בטעות.
ב-iOS, אנחנו מחזירים שגיאה כשהקצב חורג מהמגבלות של APNs.