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

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

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

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

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

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

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

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

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

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

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

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

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