יש שתי אפשרויות להקצאת עדיפות למשלוח של הודעות ב-Android: עדיפות רגילה ועדיפות גבוהה. כך שולחים הודעות רגילות או הודעות בעדיפות גבוהה:
עדיפות רגילה זוהי רמת העדיפות שמוגדרת כברירת מחדל להודעות נתונים. הודעות בעדיפות רגילה נשלחות באופן מיידי כשהמכשיר לא במצב שינה. כשהמכשיר נמצא במצב שינה, יכול להיות שההעברה תידחה כדי לחסוך בסוללה עד שהמכשיר ייצא ממצב השינה. להודעות פחות דחופות, כמו התראות על אימיילים חדשים, שמירה על סנכרון של ממשק המשתמש או סנכרון נתוני האפליקציה ברקע, בוחרים בעדיפות 'אימייל רגיל'.
כשאתם מקבלים הודעה בעדיפות רגילה ב-Android עם בקשה לסנכרון נתונים ברקע של האפליקציה, אתם יכולים לתזמן משימה באמצעות WorkManager כדי לטפל בה כשהרשת תהיה זמינה.
עדיפות גבוהה. FCM מנסה להעביר הודעות בעדיפות גבוהה באופן מיידי, וכך לאפשר ל-FCM להוציא מכשיר שינה כשיש צורך ולהפעיל עיבוד מוגבל (כולל גישה מוגבלת מאוד לרשת). בדרך כלל, הודעות בעדיפות גבוהה אמורות לגרום לאינטראקציה של המשתמשים עם האפליקציה או עם ההתראות שלה.
טיפול בהודעות והסרת העדיפות שלהן ב-Android
הודעות בעדיפות גבוהה ב-Android מיועדות לתוכן שזמני וצריך להציג אותו למשתמשים, והן אמורות להוביל להצגת התראות למשתמשים. אם FCM יחזה דפוס שבו הודעות לא גורמות להצגת התראות למשתמש, יכול להיות שהעדיפות של ההודעות תופחת לעדיפות רגילה או שהן יוקצו לטיפול על ידי Google Play Services.
FCM משתמש בהתנהגות ההודעות מ-7 הימים האחרונים כדי לקבוע אם להפחית את רמת העדיפות של הודעות או להעביר אותן לשירות proxy. המערכת מקבלת את ההחלטה הזו בנפרד לכל מכונה של האפליקציה. אם בתגובה להודעות בעדיפות גבוהה, התראות מוצגות באופן שגלוי למשתמש, ההודעות העתידיות בעדיפות גבוהה לא יושפעו.
הענקת גישה להתראות באמצעות Google Play Services
הודעות התראה בעדיפות גבוהה (לא הודעות נתונים) שעומדות בקריטריונים מסוימים עוברות דרך שרת proxy של Google Play Services במקום שהעדיפות שלהן תופחת. כלומר, ההתראות מוצגות על ידי Google Play Services בשם האפליקציה, בלי צורך להפעיל את האפליקציה. המטרה היא לספק חוויית משתמש טובה יותר במכשירי Android.
חשוב לזכור שהשימוש בשרת proxy להעברת הודעות גורם לשינויים באופן הדיווח על ניתוח הנתונים שקשור להודעות שמתקבלות:
- כדי לדווח על ניתוח נתונים של התראות דרך שרת proxy, באפליקציה צריך להשתמש ב-FCM SDK מגרסה 24.0.0 ואילך.
- יכול להיות שיהיו עיכובים או ירידות במספר ההודעות שהתקבלו לעומת המספר שקדם להצגת ההתראות דרך שרת proxy. הסיבה לכך היא שניתוח הנתונים של התראות דרך שרת proxy מדווח רק אחרי שהאפליקציה מופעלת, ויכול להיות שלא ידווח בכלל אם ההתראה לא גורמת לפתיחת האפליקציה.
שרת proxy להודעות התראה בדרך הזו הוא התנהגות ברירת המחדל לאפליקציות שמשתמשות ב-Android Q+ וב-Google Play Services מגרסה 19054000 ואילך. הודעות שנשלחות דרך HTTP v1 API עוברות דרך שרת proxy, אבל הודעות שנשלחות דרך מסוף Firebase או ממשקי ה-API מהדור הקודם לא עוברות דרך שרת proxy. לתשומת ליבכם, התכונה הזו נמצאת כרגע בגרסת בטא וכפופה לשינויים.
מומלץ מאוד להשאיר את הענקת הגישה מופעלת בגלל היתרונות שלה לסוללה ולזיכרון של המכשיר, אבל אפשר לבטל את ההסכמה לפעולה הזו באחת מהדרכים הבאות:
- ברמת האפליקציה: מוסיפים את ההנחיה
<meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>
למניפסט של האפליקציה. - על בסיס מכונה של אפליקציה: במכונה של האפליקציה, מגדירים את
fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!>
בתהליך של ממשק המשתמש של האפליקציה, בהתאם לתרחיש לדוגמה הספציפי. - על בסיס הודעה: מגדירים את המפתח
proxy
כ-DENY
באובייקטAndroidNotification
של בקשת השליחה.
מדידת הורדת העדיפות של הודעות ב-Android
הודעות ספציפיות. בזמן המסירה, אפשר לבדוק אם הודעת אימייל מסוימת הופחתה בעדיפות או לא, על ידי השוואה בין העדיפות של ההודעה שנשלחה, מ-getPriority(), לבין העדיפות המקורית של ההודעה, מ-getOriginalPriority().
כל ההודעות. באמצעות FCM Aggregate Delivery Data API תוכלו לקבל דיווח על אחוז ההודעות ל-Android שהעדיפות שלהן הופחתה. יכול להיות שחלק מההודעות לא יופיעו בדוחות הנתונים המצטברים, אבל באופן כללי הם אמורים לספק תמונה גלובלית של שיעורי ההסרה של הודעות מרשימת ההודעות בעדיפות גבוהה. מידע נוסף וקוד לדוגמה לשליחת שאילתות ל-API זמינים במאמר בנושא נתוני העברה מצטברים. אפשר גם לעיין בנתונים האלה דרך כלי הניווט ב-API.
התראות דרך שרת proxy. התראות שמועברות דרך שרת proxy לא ייכללו במדדי ההעברה הנוכחיים של FCM או GA, ולכן ייתכן שתבחינו בירידה של עד 15% במדדי ההעברה של ההתראות. כדי לדווח על הודעות שעברו דרך שרת proxy, משתמשים ב-FCM Aggregate Delivery Data API.
ProxyNotificationInsightPercents
מדווח על אחוז ההודעות שהועברו בהצלחה דרך שרת proxy, וגם על פרטים לגבי הודעות שלא ניתן היה להעביר דרך שרת proxy.
פתרון בעיות
מוודאים שההתראות מופעלות במכונה של האפליקציה. אם המשתמש השבית את הרשאת ההתראות באפליקציה שלכם, אף אחת מההתראות לא תפורסם. כתוצאה מכך, ההודעות שלכם לא יקבלו עדיפות. לפני שליחת הודעות בעדיפות גבוהה למכונה של אפליקציה, צריך לוודא שההתראות מופעלות.
אין להתקשר הביתה לפני פרסום ההודעה. מכיוון שחלק קטן מהמשתמשים בניידים עם Android משתמשים ברשתות עם זמן אחזור גבוה, מומלץ להימנע מפתיחת חיבור לשרתים לפני הצגת ההתראה. קריאה חוזרת לשרת לפני סיום זמן העיבוד המורשה עלולה להיות מסוכנת למשתמשים ברשתות עם זמן אחזור ארוך. במקום זאת, כדאי לכלול את תוכן ההתראה בהודעת FCM ולהציג אותה באופן מיידי. אם אתם צריכים לסנכרן תוכן נוסף באפליקציה ב-Android, תוכלו לתזמן משימה באמצעות WorkManager כדי לטפל בכך ברקע.