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

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

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

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

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