Le notifiche in Android 13 utilizzano un modello di attivazione, che è diverso dalle versioni precedenti di Android, che utilizzano un modello di disattivazione. In Android 13, tutte le app devono chiedere l'autorizzazione agli utenti prima di inviare prompt di notifica. Questo modello contribuisce a ridurre le interruzioni delle notifiche, a ridurre al minimo il sovraccarico di informazioni e ad aiutare gli utenti a controllare quali notifiche vengono visualizzate in base a ciò che è importante per loro. Per supportare il modello di attivazione, gli OEM devono implementare modifiche nei sistemi di autorizzazione di runtime e delle notifiche.
Questa pagina descrive cosa devono implementare gli OEM per supportare questa modifica e come convalidare l'implementazione.
Implementare le modifiche per le notifiche con consenso esplicito
A partire da Android 13, le app devono dichiarare la propria
intenzione di inviare notifiche richiedendo
l'autorizzazione di runtime
android.permission.POST_NOTIFICATION
dal sistema prima di poter inviare notifiche.
In Android 13 e versioni successive, l'impostazione che determina se un'app può inviare notifiche all'utente è memorizzata nel sistema di autorizzazioni. Prima di Android 13, questa impostazione veniva memorizzata nel sistema di notifiche. Pertanto, gli OEM devono eseguire la migrazione dei dati di notifica esistenti relativi all'autorizzazione di un'app a inviare notifiche dal sistema di notifica al sistema di autorizzazioni di runtime. I produttori di apparecchiature originali devono inoltre mantenere le API esistenti nel sistema di notifiche che mostrano questi dati agli sviluppatori di app.
Le modifiche ai sistemi di notifiche e autorizzazioni si basano sul modello di attivazione del comportamento di notifica degli utenti e sono descritte nella sezione Linee guida per l'implementazione.
Comportamento delle notifiche utente in un modello di attivazione
La tabella seguente illustra il comportamento delle notifiche per varie versioni dell'app su un dispositivo con Android 13:
Dispositivo con Android 13 | App che hanno come target Android 13 o versioni successive | App che hanno come target versioni precedenti ad Android 13 |
---|---|---|
Nuova installazione | Le notifiche vengono bloccate finché non vengono richieste dall'app.
Le app controllano quando richiedere l'autorizzazione. |
Le notifiche sono bloccate finché non vengono richieste dal sistema operativo.
L'autorizzazione viene richiesta al primo avvio dell'app. |
App esistente (upgrade) | Le notifiche sono consentite fino a quando non viene richiesto dall'app.
L'autorizzazione temporanea viene concessa fino a quando l'app non la richiede alla prima esecuzione idonea. |
Le notifiche sono consentite fino a quando non viene richiesto dal sistema operativo.
L'autorizzazione temporanea viene concessa fino alla prima esecuzione dell'app. |
Linee guida per l'implementazione
Per l'implementazione di riferimento, consulta servizio di notifica, servizio di autorizzazione e servizio di policy. Per implementare eccezioni per i gestori delle autorizzazioni predefiniti, vedi Autorizzazioni di runtime.
Durante l'implementazione, utilizza le seguenti linee guida sul comportamento delle notifiche utente per le app che hanno come target SDK Android 13 o versioni precedenti:
- Le app appena installate su un dispositivo Android 13
non devono inviare una notifica senza che l'utente approvi una richiesta di autorizzazione.
- Se l'app ha come target Android 13 e versioni successive, le notifiche devono essere bloccate finché non vengono richieste dall'app, in quanto l'app controlla quando e se chiedere l'autorizzazione all'utente.
- Se l'app ha come target versioni precedenti ad Android 13, le notifiche devono essere bloccate finché non vengono richieste dal sistema operativo. Il sistema operativo deve mostrare la richiesta di autorizzazione al primo avvio dell'app.
Qualsiasi app presente sul dispositivo prima dell'upgrade ad Android 13 o qualsiasi app ripristinata tramite backup e ripristino deve essere autorizzata a inviare notifiche fino alla prima volta che l'utente avvia un'attività da quell'app.
Per le app che hanno come target SDK di versioni Android 13 e successive, se l'utente non ha personalizzato in precedenza le impostazioni di notifica per questa app a livello di app o
NotificationChannel
, revoca la concessione temporanea dell'autorizzazione. Le app devono quindi chiedere l'autorizzazione all'utente prima di poter continuare a inviare notifiche.Se un'app aggiornata che ha come target Android 13 non dispone attualmente dell'autorizzazione per le notifiche tramite la concessione temporanea dell'aggiornamento e l'utente l'ha avviata almeno una volta, l'app deve mostrare una richiesta di autorizzazione per le notifiche prima di poter eseguire altri servizi in primo piano.
Per le app con un SDK di destinazione di versioni precedenti ad Android 13, intercetta il primo avvio dell'attività dopo che l'app ha creato almeno un
NotificationChannel
per mostrare una richiesta di autorizzazione che chiede all'utente se vuole ricevere notifiche dall'app.Se un utente ha personalizzato in precedenza le impostazioni di notifica a livello di app o
NotificationChannel
per un'app sul dispositivo di upgrade o in un backup ripristinato sul dispositivo, l'impostazione a livello di app deve essere migrata nel sistema di autorizzazioni con il flagFLAG_PERMISSION_USER_SET
. All'utente non deve essere mostrato alcun altro prompt di autorizzazione delle notifiche, a meno che l'app non lo richieda specificamente.
Il backup e il ripristino devono essere compatibili con le versioni precedenti e successive tra un dispositivo Android 13 e un dispositivo con una versione precedente del sistema operativo. Il backup dei dati generati da un dispositivo Android 13 deve essere ripristinato su una versione precedente del sistema operativo, mentre il backup dei dati di una versione precedente del sistema operativo deve essere ripristinato su un dispositivo Android 13.
Le notifiche relative alla riproduzione di contenuti multimediali in corso devono essere esenti dall'autorizzazione per le notifiche.
Convalidare le modifiche ai sistemi di notifiche e autorizzazioni
Per convalidare l'implementazione, esegui i seguenti test:
Test delle unità come specificato in
PreferencesHelperTest
,NotificationManagerServiceTest
.Qualsiasi test manuale che verifichi gli upgrade e il backup e il ripristino.
Qualsiasi test del sistema di autorizzazioni e notifiche CTS che invia notifiche. Alcuni di questi test si trovano in cts/tests/tests/permission/, NotificationManagerTest.java, e cts/tests/tests/notificationlegacy/.