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

ב-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) ומעלה, אם המשתמש דוחה את ההרשאה לשליחת התראות, הוא עדיין רואה התראות שקשורות לשירותים שפועלים בחזית במנהל המשימות, אבל לא רואה אותן במגירת ההתראות.

פעילויות מדיה

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

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

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

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

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