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

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

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

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

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

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

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

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

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

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

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

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

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

אפקטים באפליקציות שהותקנו לאחרונה

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

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

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

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

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

דרישות הסף למתן הרשאה מראש

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

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

פטורים

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

Media sessions

ההתנהגות הזו לא חלה על התראות שקשורות לסשנים של מדיה.

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

אם האפליקציה מוגדרת לניהול עצמי של שיחות טלפון, לא צריך את ההרשאה 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, האפליקציה לא צריכה להציג את המסך האמצעי – זה עם הטקסט בכותרת 'קבלת עדכונים!'.

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

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

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

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

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

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

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

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

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