Android 13 (livello API 33) e versioni successive supportano un'autorizzazione di runtime per l'invio di notifiche esenti (inclusi i servizi in primo piano (FGS)) da un'app:
POST_NOTIFICATIONS
.
Questa modifica aiuta gli utenti a concentrarsi sulle notifiche più importanti per loro.
Ti consigliamo vivamente di scegliere come target Android 13 o versioni successive il prima possibile per usufruire del controllo e della flessibilità aggiuntivi di questa funzionalità. Se continui a scegliere come target 12L (livello API 32) o versioni precedenti, perdi un po' di flessibilità con la richiesta dell'autorizzazione nel contesto della funzionalità dell'app.
Dichiara l'autorizzazione
Per richiedere la nuova autorizzazione di notifica dalla tua app, aggiornala in modo che abbia come target Android 13 e completa una procedura simile a quella per la richiesta di altre autorizzazioni di runtime, come mostrato nelle sezioni seguenti.
L'autorizzazione che devi dichiarare nel file manifest dell'app compare nel seguente snippet di codice:
<manifest ...> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> <application ...> ... </application> </manifest>
Le funzionalità dell'app dipendono dalla scelta dell'utente nella finestra di dialogo delle autorizzazioni
In questa finestra di dialogo, gli utenti hanno a disposizione le seguenti azioni:
- Seleziona Consenti.
- Seleziona Non consentire.
- Scorri lontano dalla finestra di dialogo, senza premere alcun pulsante
Le seguenti sezioni descrivono il comportamento dell'app in base all'azione intrapresa dall'utente.
L'utente seleziona "Consenti"
Se l'utente seleziona l'opzione Consenti, la tua app può:
- Inviare notifiche. Sono consentiti tutti i canali di notifica.
- Pubblicare notifiche relative ai servizi in primo piano. Queste notifiche vengono visualizzate nel riquadro a scomparsa delle notifiche.
L'utente seleziona "Non consentire"
Se l'utente seleziona l'opzione Non consentire, la tua app non può inviare notifiche, a meno che non soddisfi i requisiti per un'esenzione. Tutti i canali di notifica sono bloccati, ad eccezione di alcuni ruoli specifici. Questo è simile al comportamento che si verifica quando l'utente disattiva manualmente tutte le notifiche per la tua app nelle impostazioni di sistema.
Attenzione: se la tua app ha come target 12L o versioni precedenti e l'utente tocca Non consentire, anche solo una volta, non gli verrà chiesto di nuovo finché non si verifica una delle seguenti condizioni:
- L'utente disinstalla e reinstalla la tua app.
- Aggiorna l'app in modo che abbia come target Android 13 o versioni successive.
L'utente scompare dalla finestra di dialogo
Se l'utente scompare dalla finestra di dialogo, ovvero non seleziona Consenti o Non consentire, lo stato dell'autorizzazione di notifica non cambia.
Effetti sulle app appena installate
Se un utente installa la tua app su un dispositivo con Android 13 o versioni successive, le notifiche sono disattivate per impostazione predefinita. L'app deve attendere di inviare notifiche fino a quando non richiedi la nuova autorizzazione e l'utente la concede all'app.
Il momento in cui viene visualizzata la finestra di dialogo delle autorizzazioni dipende dalla versione SDK di destinazione dell'app:
- Se la tua app ha come target Android 13 o versioni successive, ha il controllo completo sul momento in cui viene visualizzata la finestra di dialogo delle autorizzazioni. Sfrutta questa opportunità per spiegare agli utenti perché l'app ha bisogno di questa autorizzazione, invitandoli a concederla.
- Se la tua app ha come target 12L (livello API 32) o versioni precedenti, il sistema mostra la finestra di dialogo delle autorizzazioni la prima volta che l'app avvia un'attività dopo aver creato un canale di notifica oppure quando l'app avvia un'attività e poi crea il primo canale di notifica. Di solito avviene all'avvio dell'app.
Effetti sugli aggiornamenti delle app esistenti
Per ridurre al minimo le interruzioni associate all'autorizzazione di notifica, il sistema preconcede automaticamente l'autorizzazione a tutte le app idonee quando l'utente esegue l'upgrade del dispositivo ad Android 13 o versioni successive. In altre parole, queste app possono continuare a inviare notifiche agli utenti, che non vedranno una richiesta di autorizzazione di runtime.
Idoneità alla pre-concessione dell'autorizzazione
Affinché la tua app sia idonea per una preassegnazione automatica, deve avere un canale di notifica esistente e le notifiche non devono essere disattivate esplicitamente dall'utente su un dispositivo con Android 12L o versioni precedenti.
Se l'utente ha disattivato le notifiche per la tua app su un dispositivo con Android 12L o versioni precedenti, il rifiuto persiste quando il dispositivo esegue l'upgrade ad Android 13 o versioni successive.
Esenzioni
Questa sezione contiene l'insieme di notifiche e app esenti dalla modifica del comportamento dell'autorizzazione di notifica. Su Android 13 (livello API 33) o versioni successive, se l'utente nega l'autorizzazione di notifica, continua a vedere le notifiche relative ai servizi in primo piano nel Task Manager, ma non le vede nella riquadro delle notifiche.
Sessioni multimediali
Le notifiche relative alle sessioni multimediali sono esenti da questa modifica del comportamento.
App configurate per gestire autonomamente le chiamate
Se la tua app si configura per gestire autonomamente le chiamate, non hai bisogno dell'autorizzazione POST_NOTIFICATIONS
per inviare notifiche che utilizzano lo stile di notifica Notification.CallStyle
.
Il sistema considera che la tua app si sia configurata per la gestione autonoma delle chiamate se esegue ciascuna delle seguenti operazioni:
- Dichiara l'autorizzazione
MANAGE_OWN_CALLS
. - Implementa l'interfaccia
ConnectionService
. - Si registra con il provider di telecomunicazioni del dispositivo chiamando
registerPhoneAccount()
.
Testare l'app
Puoi valutare l'impatto dell'autorizzazione di notifica sulla tua app quando viene utilizzata per la prima volta su un dispositivo con Android 13 o versioni successive. I seguenti set di comandi Android Debug Bridge (ADB) ti consentono di simulare le sequenze più comuni di scelte dell'utente e upgrade del dispositivo senza dover reimpostare il dispositivo di test:
L'app è stata appena installata su un dispositivo con Android 13 o versioni successive:
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
L'utente mantiene le notifiche attive quando l'app è installata su un dispositivo con 12L o versioni precedenti, quindi il dispositivo esegue l'upgrade ad Android 13 o versioni successive:
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
L'utente disattiva manualmente le notifiche quando l'app è installata su un dispositivo con Android 12L o versioni precedenti, quindi il dispositivo esegue l'upgrade ad Android 13 o versioni successive:
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
Best practice
Questa sezione descrive diversi modi in cui puoi utilizzare la nuova autorizzazione di notifica in modo più efficace nella tua app.
Aggiorna la versione dell'SDK target dell'app
Per offrire alla tua app una maggiore flessibilità in merito al momento in cui viene visualizzata la finestra di dialogo delle autorizzazioni, aggiornata in modo che abbia come target Android 13 o versioni successive.
Attendere la richiesta di autorizzazione per le notifiche
Prima di chiedere agli utenti di concedere autorizzazioni, lascia che si familiarizzino con la tua app.
I nuovi utenti potrebbero voler esplorare l'app e scoprire personalmente i vantaggi di ogni singola richiesta di notifica. Puoi attivare una richiesta di autorizzazione da un'azione dell'utente. Di seguito sono riportati diversi esempi di casi in cui è opportuno mostrare la richiesta di autorizzazione per le notifiche:
- L'utente tocca un pulsante "campana di avviso".
- L'utente sceglie di seguire l'account di un utente di social media.
- L'utente invia un ordine per la consegna di cibo.
La figura 1 mostra un flusso di lavoro consigliato per richiedere l'autorizzazione di notifica. A meno che
shouldShowRequestPermissionRationale()
non restituisca true
, la tua app non deve visualizzare la schermata intermedia, quella con il testo del titolo "Ricevi notifiche".
In alternativa, puoi impostare una richiesta in modo che venga visualizzata dopo aver dato agli utenti la possibilità di familiarizzare con la tua app. Ad esempio, puoi attendere la terza o la quarta volta che l'utente avvia la tua app.
Richiedi l'autorizzazione nel contesto
Quando richiedi le autorizzazioni di notifica all'interno della tua app, fallo nel contesto corretto, in modo che sia esplicitamente chiaro a cosa servono le notifiche e perché l'utente debba attivarle. Ad esempio, un'app email potrebbe includere opzioni per inviare notifiche per ogni nuova email o solo per le email in cui l'utente è l'unico destinatario.
Sfrutta questa opportunità per mostrare le tue intenzioni in modo trasparente e gli utenti saranno più propensi a concedere l'autorizzazione di notifica alla tua app.
Controllare se la tua app può inviare notifiche
Prima che la tua app invii una notifica, verifica se l'utente ha attivato le notifiche per la tua app. Per farlo, chiama areNotificationsEnabled()
.
Utilizzare l'autorizzazione in modo responsabile
Dopo aver ricevuto l'approvazione per l'invio di notifiche, ricordati di utilizzare l'autorizzazione in modo responsabile. Gli utenti possono vedere il numero di notifiche giornaliere inviate dalla tua app e revocare l'autorizzazione in qualsiasi momento.