Autorizzazione runtime notifiche

Android 13 (livello API 33) e versioni successive supportano un'autorizzazione di runtime per l'invio di notifiche non esenti (inclusi i servizi in primo piano (FGS)) da un'app: POST_NOTIFICATIONS. Questa modifica consente agli utenti di concentrarsi sulle notifiche per loro più importanti.

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 un livello inferiore, perderai una certa flessibilità nel richiedere l'autorizzazione nel contesto della funzionalità della tua app.

Dichiara l'autorizzazione

Per richiedere la nuova autorizzazione alle notifiche dalla tua app, aggiorna l'app in modo che abbia come target Android 13 e completa una procedura simile a quella della richiesta di altre autorizzazioni di runtime, come mostrato nelle sezioni seguenti.

L'autorizzazione necessaria per dichiarare nel file manifest dell'app viene visualizzata 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:

Le seguenti sezioni descrivono il comportamento della tua app in base all'azione eseguita dall'utente.

L'utente seleziona "Consenti"

Se l'utente seleziona l'opzione consenti, la tua app può:

L'utente seleziona "Non consentire"

Se l'utente seleziona l'opzione non consentire, la tua app non potrà 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 a quello che si verifica quando l'utente disattiva manualmente tutte le notifiche per la tua app nelle impostazioni di sistema.

Attenzione:se l'app ha come target 12 L o meno e l'utente tocca Non consentire, anche solo una volta, la richiesta non viene visualizzata 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 scorre fuori dalla finestra di dialogo

Se l'utente scorre fuori dalla finestra di dialogo, ovvero senza selezionare 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 dell'app sono disattivate per impostazione predefinita. L'app deve attendere l'invio di notifiche fino a quando non richiedi la nuova autorizzazione e l'utente concede l'autorizzazione alla tua app.

L'ora in cui viene visualizzata la finestra di dialogo delle autorizzazioni dipende dalla versione dell'SDK di destinazione dell'app:

  • Se la tua app ha come target Android 13 o versioni successive, ha il controllo completo su quando viene visualizzata la finestra di dialogo delle autorizzazioni. Sfrutta questa opportunità per spiegare agli utenti perché l'app ha bisogno di questa autorizzazione, incoraggiandoli a concederla.
  • Se la tua app ha come target 12 L (livello API 32) o un livello inferiore, il sistema mostra la finestra di dialogo di autorizzazione la prima volta che l'app avvia un'attività dopo la creazione di un canale di notifica oppure quando l'app avvia un'attività e poi crea il primo canale di notifica. In genere questo accade all'avvio dell'app.

Effetti sugli aggiornamenti delle app esistenti

Per ridurre al minimo le interruzioni associate all'autorizzazione alle notifiche, il sistema concede 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 e gli utenti non vedono una richiesta di autorizzazione di runtime.

Idoneità per la concessione in anticipo dell'autorizzazione

Affinché la tua app sia idonea per una pre-concessione automatica, deve avere un canale di notifica esistente e non avere le notifiche esplicitamente disattivate dall'utente su un dispositivo con una potenza di almeno 12 litri.

Se l'utente ha disattivato le notifiche per la tua app su un dispositivo con 12 L 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 alle notifiche, visualizzerà comunque avvisi relativi ai servizi in primo piano in Task Manager ma non nel cassetto delle notifiche.

Sessioni multimediali

Le notifiche relative alle sessioni multimediali sono esenti da questa modifica del comportamento.

App configurate per la gestione autonoma delle telefonate

Se la tua app si configura per la gestione autonoma delle chiamate telefoniche, non devi disporre dell'autorizzazione POST_NOTIFICATIONS per consentire alla tua app di inviare notifiche che utilizzano lo stile di notifica Notification.CallStyle.

Il sistema considera che la tua app si è configurata autonomamente per le chiamate telefoniche gestite in modo autonomo se svolge tutte le seguenti operazioni:

  1. Dichiara l'autorizzazione MANAGE_OWN_CALLS.
  2. Implementa l'interfaccia ConnectionService.
  3. Effettua la registrazione presso il fornitore di telecomunicazioni del dispositivo chiamando registerPhoneAccount().

Testare l'app

Puoi valutare in che modo l'autorizzazione alle notifiche influisce sulla tua app quando viene utilizzata per la prima volta su un dispositivo con Android 13 o versioni successive. I seguenti insiemi 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 abilitate quando l'app è installata su un dispositivo da 12 L o versioni precedenti, dopodiché 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 da 12 L o versioni precedenti, dopodiché 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 i 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 maggiore flessibilità sul momento in cui viene visualizzata la finestra di dialogo delle autorizzazioni, aggiornala in modo che abbia come target Android 13 o versioni successive.

Attendi che venga mostrata la richiesta di autorizzazione alle notifiche

Prima di chiedere agli utenti di concedere autorizzazioni, consenti loro di acquisire familiarità con la tua app.

I nuovi utenti potrebbero voler esplorare l'app e scoprire in prima persona i vantaggi di ogni singola richiesta di notifica. Puoi attivare una richiesta di autorizzazione da un'azione dell'utente. Il seguente elenco mostra diversi esempi di quando è il momento giusto per mostrare la richiesta di autorizzazione alle notifiche:

  • L'utente tocca il pulsante con una "campana di avviso".
  • L'utente sceglie di seguire l'account di social media di una persona.
  • L'utente invia un ordine per la consegna di cibo a domicilio.

La Figura 1 mostra un flusso di lavoro consigliato per richiedere l'autorizzazione di notifica. A meno che shouldShowRequestPermissionRationale() restituisca true, l'app non deve necessariamente visualizzare la schermata centrale, quella che ha il titolo "Ricevi notifiche".

In alternativa, puoi impostare una richiesta da visualizzare dopo aver dato agli utenti la possibilità di acquisire familiarità con la tua app. Ad esempio, potresti attendere fino alla terza o alla quarta volta che l'utente avvia la tua app.

Una volta eseguito l&#39;accesso, l&#39;utente riceve un invito a ricevere notifiche sugli aggiornamenti della corsa. Dopo che l&#39;utente preme il pulsante Sì, l&#39;app richiede la nuova autorizzazione e, di conseguenza, viene visualizzata la finestra di dialogo di sistema
Figura 1. Un flusso di lavoro consigliato dall'utente per richiedere l'autorizzazione alle notifiche. La schermata centrale è necessaria solo se shouldShowRequestPermissionRationale() restituisce true.

Richiedi l'autorizzazione nel contesto

Quando richiedi autorizzazioni alle notifiche all'interno dell'app, fallo nel contesto corretto, in modo che sia chiaro per cosa vengono utilizzate le notifiche e perché l'utente dovrebbe attivarle. Ad esempio, un'app email potrebbe includere opzioni per l'invio di notifiche per ogni nuova email o solo per quelle di cui l'utente è l'unico destinatario.

Sfrutta questa opportunità per trasparenza nelle tue intenzioni e gli utenti sono più propensi a concedere l'autorizzazione alle notifiche alla tua app.

Controllare se la tua app può inviare notifiche

Prima che l'app invii una notifica, verifica se l'utente ha abilitato le notifiche per l'app. Per farlo, chiama il numero areNotificationsEnabled().

Usa l'autorizzazione in modo responsabile

Dopo aver ricevuto l'approvazione a inviare notifiche, ricordati di utilizzare l'autorizzazione in modo responsabile. Gli utenti possono vedere il numero di notifiche giornaliere inviate dall'app e revocare l'autorizzazione in qualsiasi momento.