הגדרה וניהול של עדיפות הודעות

יש שתי אפשרויות להקצאת עדיפות למשלוח של הודעות ב-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 כדי לטפל בכך ברקע.