הרשאה בתחילת ההפעלה של התראות

מערכת Android 13 (רמת API 33) ואילך תומכת הרשאת זמן ריצה לשליחה הודעות על לא פטורות (כולל הודעות על שירותים שפועלים בחזית (FGS)) מאפליקציה: POST_NOTIFICATIONS. השינוי הזה עוזר למשתמשים להתמקד בהתראות שהכי חשובות להם.

מומלץ מאוד לטרגט את Android 13 ואילך בהקדם האפשרי כדי ליהנות מהשליטה והגמישות הנוספות של התכונה הזו. אם תמשיכו לטרגט את Android 12L (רמת API 32) ואילך, תאבדו חלק מהגמישות של בקשת ההרשאה בהקשר של הפונקציונליות של האפליקציה.

להצהיר על ההרשאה

כדי לבקש הרשאה חדשה לשליחת התראות מהאפליקציה, צריך לעדכן את האפליקציה כך לטרגט ל-Android 13 ולהשלים תהליך דומה בהשוואה בקשת הרשאות אחרות בתחילת ההפעלה, כמו בקטעים הבאים.

ההרשאה הנדרשת הצהרה בקובץ המניפסט של האפליקציה מופיעה בקטע הקוד הבא:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

יכולות האפליקציה תלויות בבחירת המשתמש בתיבת הדו-שיח להרשאות

בתיבת הדו-שיח הזו, המשתמשים לבצע את הפעולות הבאות:

בקטעים הבאים מתוארים האופן שבו האפליקציה פועלת, בהתאם לפעולה שהמשתמש מבצע.

המשתמש בוחר באפשרות 'אישור'

אם המשתמש יבחר באפשרות Allow (אישור), האפליקציה שלכם תוכל לבצע את הפעולות הבאות:

המשתמש בוחר באפשרות 'אין אישור'

אם המשתמש בוחר באפשרות אין אישור, האפליקציה לא תוכל לשלוח התראות, אלא אם היא עומדת בדרישות לפטור. הכול ערוצי ההתראות חסומים, למעט כמה תפקידים. ההתנהגות הזו דומה להתנהגות שמתרחשת כשהמשתמש פונה באופן ידני להשבית את כל ההתראות מהאפליקציה בהגדרות המערכת.

זהירות: אם האפליקציה מטרגטת 12 ליטר או פחות והמשתמש מקיש על אין אישור, אפילו פעם אחת, לא מופיעה בקשה עד שמתקיים אחד מהתנאים הבאים:

  • המשתמש מסיר את האפליקציה ומתקין אותה מחדש.
  • אתם מעדכנים את האפליקציה כך שהיא תטרגט את Android 13 ואילך.

המשתמש מחליק מתיבת הדו-שיח

אם המשתמש מחליק מחוץ לתיבת הדו-שיח, כלומר הוא לא בוחר allow או לא לאפשר – מצב ההרשאה לשליחת התראות לא מאפשר שינוי.

השפעות על אפליקציות שהותקנו לאחרונה

אם משתמש מתקין את האפליקציה במכשיר עם Android בגרסה 13 ואילך, ההתראות של האפליקציה מושבתות כברירת מחדל. האפליקציה שלכם תצטרך להמתין כדי לשלוח התראות עד שתבקשו את ההרשאה החדשה והמשתמש יעניק לאפליקציה את ההרשאה הזו.

הזמן שבו תיבת הדו-שיח של ההרשאות תופיע מבוסס על גרסת ה-SDK היעד של האפליקציה:

  • אם האפליקציה שלכם מטרגטת את Android 13 ואילך, יש לה שליטה מלאה על מועד הצגת תיבת הדו-שיח של בקשת ההרשאה. כדאי לנצל את ההזדמנות הזו כדי להסביר למשתמשים למה נדרשת לאפליקציה ההרשאה הזו, ולעודד אותם להעניק אותה.
  • אם האפליקציה מטרגטת 12L (רמת API 32) או פחות, המערכת תציג בתיבת הדו-שיח של ההרשאות, בפעם הראשונה שהאפליקציה מתחילה פעילות אחרי ליצור ערוץ התראות, או כאשר מתחילה פעילות ואז יוצרת את ערוץ ההתראות הראשון שלה. בדרך כלל זה קורה בזמן הפעלת האפליקציה.

השפעות על עדכונים באפליקציות קיימות

כדי למזער את ההפרעות שקשורות להרשאת ההתראות, המערכת מעניקה מראש את ההרשאה לכל האפליקציות שעומדות בדרישות כשהמשתמש משדרג את המכשיר ל-Android 13 ואילך. במילים אחרות, האפליקציות האלה יכולות להמשיך שליחת התראות למשתמשים, והמשתמשים לא רואים בקשה להרשאה בתחילת ההפעלה.

זכאות להרשאה מראש

כדי שהאפליקציה תעמוד בדרישות להענקה אוטומטית מראש, צריכה להיות לה ערוץ התראות קיים וההתראות לא מושבתות בו באופן מפורש על ידי המשתמש במכשיר עם 12L או פחות.

אם המשתמש השבית את ההתראות של האפליקציה במכשיר עם Android מגרסה 12L ואילך, הדחייה הזו תישאר בתוקף גם אחרי השדרוג של המכשיר ל-Android מגרסה 13 ואילך.

פטורים

הקטע הזה מכיל את קבוצת ההתראות והאפליקציות שפטורות מהעמודה שינוי בהתנהגות של ההרשאה לשליחת התראות. ב-Android 13 (רמת API 33) ואילך, אם המשתמש דוחה את הרשאת ההתראות, הוא עדיין רואה התראות שקשורות לשירותים שפועלים בחזית במנהל המשימות, אבל לא רואה אותן במגירה של ההתראות.

סשנים של מדיה

התראות שקשורות לנושאים סשנים במדיה פטור משינוי התנהגות זה.

אפליקציות שהוגדרו לניהול עצמי של שיחות טלפון

אם האפליקציה מגדירה את עצמה לניהול עצמי של שיחות טלפון, לא זקוקים להרשאת POST_NOTIFICATIONS כדי שהאפליקציה תוכל לשלוח בהתראות שמבוססות על Notification.CallStyle סגנון התראה.

המערכת מתייחסת לאפליקציה כאפליקציה שהגדירה את עצמה לניהול עצמי של הטלפון מבצעת קריאה אם היא מבצעת כל אחת מהפעולות הבאות:

  1. הצהרה על ההרשאה MANAGE_OWN_CALLS.
  2. מיישם את ConnectionService גרפי.
  3. מתקשרים למספר registerPhoneAccount() כדי להירשם אצל ספק התקשורת של המכשיר.

בדיקת האפליקציה

תוכלו להעריך את ההשפעה של הרשאת ההתראות על האפליקציה בפעם הראשונה שבה משתמשים בה במכשיר עם Android 13 ואילך. במעקב קבוצות של פקודות Android Debug Bridge (ADB) מאפשרות לדמות את הרצפים הנפוצים ביותר של בחירות המשתמש ושדרוגי מכשירים בלי לאפס את מכשיר הבדיקה:

  • האפליקציה הותקנה לאחרונה במכשיר שפועל בו Android מגרסה 13 ואילך:

    adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed
  • המשתמש משאיר את ההתראות מופעלות כאשר האפליקציה מותקנת במכשיר שפועלת בו 12L או פחות, שדרוג ל-Android 13 ואילך:

    adb shell pm grant PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm set-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed
  • המשתמש משבית באופן ידני התראות כאשר האפליקציה מותקנת במכשיר שפועלת בו 12L או פחות, שדרוג ל-Android 13 ואילך:

    adb shell pm revoke PACKAGE_NAME android.permission.POST_NOTIFICATIONS
    adb shell pm set-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-set
    adb shell pm clear-permission-flags PACKAGE_NAME \
      android.permission.POST_NOTIFICATIONS user-fixed

שיטות מומלצות

בקטע הזה מתוארות כמה דרכים לשימוש בהתראה החדשה בצורה היעילה ביותר באפליקציה.

צריך לעדכן את גרסת היעד של ה-SDK של האפליקציה

כדי לתת לאפליקציה גמישות רבה יותר לגבי הזמן שבו תיפתח תיבת הדו-שיח של ההרשאה, כדאי לעדכן את האפליקציה כך שתטרגט את Android 13 ואילך.

המתנה להצגת הבקשה להרשאת התראות

לפני שמבקשים מהמשתמשים להעניק הרשאות, כדאי לתת להם להתנסות באפליקציה.

ייתכן שמשתמשים חדשים ירצו לחקור את האפליקציה ולהבין באופן אישי היתרונות של כל בקשת התראה בנפרד. אפשר להפעיל בקשה להרשאות מפעולה של משתמש. ברשימה הבאה מפורטות כמה דוגמאות למקרים שבהם כדאי להציג את ההודעה לבקשת הרשאה לקבלת התראות:

  • המשתמש מקשיב על לחצן 'פעמון התראה'.
  • המשתמש בוחר לעקוב אחרי חשבון של מישהו ברשת חברתית.
  • המשתמש שולח הזמנה למשלוח אוכל.

באיור 1 מוצג תהליך עבודה מומלץ לבקשת ההרשאה לקבלת התראות. אלא אם shouldShowRequestPermissionRationale() מחזירה true, באפליקציה לא צריך להציג את המסך האמצעי – זה כולל את הטקסט "קבלו הודעה!".

לחלופין, אפשר להגדיר שהבקשה תופיע אחרי שתתנו למשתמשים הזדמנות להכיר את האפליקציה. לדוגמה, אפשר להמתין עד שהמשתמש יפעיל את האפליקציה בפעם השלישית או הרביעית.

אחרי שהמשתמש נכנס לחשבון, מוצגת לו הזמנה לקבל התראות על עדכוני הנסיעה. אחרי שהמשתמש לוחץ על הלחצן &#39;אני בעניין&#39;, האפליקציה מבקשת את ההרשאה החדשה, וכתוצאה מכך תיבת הדו-שיח של המערכת מופיעה.
איור 1. תהליך עבודה מומלץ שמבוסס על המשתמש לשליחת בקשה לקבלת ההרשאה לשליחת התראות. המסך האמצעי נחוץ רק אם הפונקציה shouldShowRequestPermissionRationale() מחזירה true.

שליחת בקשה להרשאה בהקשר

כשמבקשים הרשאות לקבלת התראות באפליקציה, צריך לעשות זאת בהקשר הנכון, כדי שיהיה ברור למה משתמשים בהתראות ולמה המשתמש צריך להביע הסכמה לקבלתן. לדוגמה, אפליקציית אימייל עשויה לכלול אפשרויות לשליחת התראות על כל אימייל חדש, או רק על הודעות אימייל שבהן המשתמש הוא הנמען היחיד.

נצלו את ההזדמנות הזו כדי לספק שקיפות לגבי הכוונות שלכם, והמשתמשים תורמים יותר עשויה לתת לאפליקציה הרשאה לשליחת התראות.

איך לבדוק אם האפליקציה יכולה לשלוח התראות

לפני שהאפליקציה שולחת התראה, צריך לוודא שהמשתמש הפעיל התראות באפליקציה. לשם כך, צריך להפעיל את הפונקציה areNotificationsEnabled().

חשוב להשתמש בהרשאה באופן אחראי

אחרי שמקבלים אישור לשלוח התראות, חשוב לזכור להשתמש בהרשאה ובאחריות. המשתמשים יכולים לראות את מספר ההתראות היומיות שהאפליקציה שלכם שולחת, והם יכולים לבטל את ההרשאה בכל שלב.