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

ב-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().

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

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