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

ב-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>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

זכאות לקבלת הרשאה לפני ההענקה

כדי שהאפליקציה שלכם תהיה כשירה להקצאה אוטומטית מראש, צריך להיות לה ערוץ התראות קיים והמשתמשים לא משביתים את ההתראות שלה באופן מפורש במכשיר עם גרסת Android 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
  • המשתמש משאיר את ההתראות מופעלות כשהאפליקציה מותקנת במכשיר עם Android 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
  • המשתמש משבית את ההתראות באופן ידני כשהאפליקציה מותקנת במכשיר עם Android 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().

שימוש אחראי בהרשאה

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