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

מערכת 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>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

זכאות להרשאה מראש

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

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

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

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

בקשת ההרשאה בהקשר

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

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

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

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

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

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