Le notifiche in Android 13 utilizzano un modello di attivazione, che rappresenta un cambiamento rispetto alle 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 richieste di conferma per le notifiche. Questo modello consente di ridurre le interruzioni delle notifiche, il sovraccarico di informazioni e aiuta 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 ai sistemi di notifiche e autorizzazioni di runtime.
Questa pagina descrive cosa devono implementare gli OEM per supportare questa modifica e come verificare l'implementazione.
Implementare modifiche per le notifiche di attivazione
A partire da Android 13, le app devono dichiarare la loro intenzione di inviare notifiche richiedendo al sistema l'autorizzazione di runtime android.permission.POST_NOTIFICATION
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 autorizzazione. Prima di Android 13, questa impostazione era memorizzata nel sistema di notifiche. Di conseguenza, gli OEM devono eseguire la migrazione dei dati sulle notifiche esistenti relativi al fatto che un'app sia autorizzata a inviare notifiche dal sistema di notifica al sistema di autorizzazione di runtime. Gli OEM devono inoltre mantenere nel sistema di notifica le API esistenti che mostrano questi dati agli sviluppatori di app.
Le modifiche ai sistemi di notifica e autorizzazione 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 diverse versioni dell'app su un dispositivo con Android 13:
Dispositivo su 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 sono bloccate finché non richiesto dall'app.
Sono le app a controllare quando chiedere l'autorizzazione. |
Le notifiche vengono bloccate finché non viene richiesto dall'OS.
L'autorizzazione viene richiesta alla prima esecuzione dell'app. |
App esistente (upgrade) | Le notifiche sono consentite finché non viene richiesto dall'app.
L'autorizzazione temporanea viene concessa finché l'app non la chiede alla prima esecuzione idonea. |
Le notifiche sono consentite fino a quando non viene richiesto dall'OS.
L'autorizzazione temporanea viene concessa fino alla prima esecuzione dell'app. |
Linee guida per l'implementazione
Per l'implementazione di riferimento, consulta service notification, service permission e service policy. Per implementare le eccezioni per i gestori di autorizzazioni predefiniti, consulta Autorizzazioni di runtime.
Durante l'implementazione, segui le seguenti linee guida sul comportamento delle notifiche per gli utenti 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 le versioni di Android 13 e versioni successive, le notifiche devono essere bloccate finché non viene richiesto dall'app, mentre quest'ultima stabilisce quando e se richiedere l'autorizzazione degli utenti.
- Se l'app ha come target versioni precedenti ad Android 13, le notifiche devono essere bloccate fino a quando non viene richiesto dal sistema operativo. Il sistema operativo deve mostrare la richiesta di autorizzazione alla prima esecuzione dell'app.
Qualsiasi app esistente sul dispositivo prima di un upgrade ad Android 13 o qualsiasi app ripristinata tramite backup e ripristino deve poter inviare notifiche fino al primo avvio di un'attività da parte dell'utente.
Per le app che hanno come target l'SDK delle 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 dell'autorizzazione temporanea. Le app devono quindi chiedere all'utente l'autorizzazione prima di poter continuare a inviare notifiche.Se un'app di cui è stato eseguito l'upgrade e che ha come target Android 13 non ha attualmente l'autorizzazione di notifica tramite la concessione dell'upgrade temporaneo e l'utente l'ha avviata almeno una volta, l'app deve mostrare una richiesta di autorizzazione di notifica prima di poter eseguire altri servizi in primo piano.
Per le app con un SDK target 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 se l'utente 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 cui viene eseguito l'upgrade o in un backup in fase di ripristino sul dispositivo, l'impostazione a livello di app deve essere migrata nel sistema di autorizzazione con il flagFLAG_PERMISSION_USER_SET
. Non deve essere mostrata all'utente un'ulteriore richiesta di autorizzazione di notifica, a meno che l'app non lo chieda espressamente.
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. I dati di backup generati da un dispositivo Android 13 devono essere ripristinati su una versione precedente del sistema operativo, mentre i dati di backup da una versione precedente del sistema operativo devono essere ripristinati su un dispositivo Android 13.
Le notifiche multimediali associate alla riproduzione multimediale in corso devono essere esenti dall'autorizzazione di notifica.
Convalida le modifiche ai sistemi di notifica e autorizzazione
Per convalidare l'implementazione, esegui i seguenti test:
Test di unità come specificato in
PreferencesHelperTest
,NotificationManagerServiceTest
.Qualsiasi test manuale che testa gli upgrade, il backup e il ripristino.
Qualsiasi test di sistema CTS per autorizzazioni e notifiche che invia notifiche. Alcuni di questi test si trovano in cts/tests/tests/permission/, NotificationManagerTest.java, e cts/tests/tests/notificationlegacy/.