Autorizzazione runtime notifiche

Android 13 (livello API 33) e versioni successive supporta un'autorizzazione di runtime per l'invio di notifiche non esenti (inclusi i servizi in primo piano (FGS)) da un'app: POST_NOTIFICATIONS. In questo modo, gli utenti possono 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 12 L (livello API 32) o un livello inferiore, perdi un po' di 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, aggiornala 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 sezioni seguenti descrivono il comportamento della tua app, in base all'azione intrapresa dall'utente.

L'utente seleziona "Consenti"

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

L'utente seleziona "Non consentire"

Se l'utente seleziona l'opzione Non consentire, la tua app non può inviare notifiche a meno che non sia idonea per un'esenzione. Tutti i canali di notifica sono bloccati, ad eccezione di alcuni ruoli specifici. Questo comportamento è 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 i 12 litri o meno e l'utente tocca Non consentire, anche solo una volta, la richiesta non verrà inviata finché non si verifica una delle seguenti condizioni:

  • L'utente disinstalla e reinstalla la tua app.
  • Devi aggiornare l'app in modo che abbia come target Android 13 o versioni successive.

L'utente scorre per uscire dalla finestra di dialogo

Se l'utente scorre lontano dalla finestra di dialogo, ovvero non seleziona Consenti o Non consentire, lo stato dell'autorizzazione alle notifiche 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. La tua app deve attendere per inviare notifiche finché non richiedi la nuova autorizzazione e l'utente ha concesso l'autorizzazione alla tua app.

Il momento in cui viene visualizzata la finestra di dialogo delle autorizzazioni dipende dalla versione dell'SDK target della tua app:

  • Se la tua app ha come target Android 13 o versioni successive, l'app 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 l'app ha come target 12L (livello API 32) o precedente, il sistema mostra la finestra di dialogo delle autorizzazioni la prima volta che l'app avvia un'attività dopo la creazione di un canale di notifica o quando l'app avvia un'attività e poi crea il primo canale di notifica. Di solito si verifica all'avvio dell'app.

Effetti sugli aggiornamenti delle app esistenti

Per ridurre al minimo le interruzioni associate all'autorizzazione alle notifiche, il sistema pre-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, che non vedranno una richiesta di autorizzazione di runtime.

Idoneità alla pre-concessione dell'autorizzazione

Affinché la tua app sia idonea alla pre-concessione automatica, deve avere un canale di notifica esistente e le notifiche non devono essere disattivate esplicitamente dall'utente su un dispositivo da 12 litri o meno.

Se l'utente ha disattivato le notifiche per la tua app su un dispositivo con 12 litri o versioni precedenti, il rifiuto persiste anche quando il dispositivo ha eseguito l'upgrade ad Android 13 o versioni successive.

Esenzioni

Questa sezione contiene l'insieme di notifiche e app esenti dalla modifica del comportamento delle autorizzazioni di notifica. Su Android 13 (livello API 33) o versioni successive, se l'utente nega l'autorizzazione alle notifiche, visualizzerà comunque le notifiche relative ai servizi in primo piano in Task Manager, ma non nel riquadro a scomparsa delle notifiche.

Sessioni multimediali

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

App configurate per la gestione autonoma delle chiamate

Se la tua app si configura per gestire autonomamente le chiamate, non hai bisogno dell'autorizzazione POST_NOTIFICATIONS per inviare notifiche in stile Notification.CallStyle.

Il sistema considera la tua app come configurata per le chiamate a gestione autonoma se esegue una delle seguenti operazioni:

  1. Dichiara l'autorizzazione MANAGE_OWN_CALLS.
  2. Implementa l'interfaccia ConnectionService.
  3. Si registra con il provider di telecomunicazioni del dispositivo chiamando il numero 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 dei dispositivi 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 viene installata su un dispositivo da 12 litri 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 viene installata su un dispositivo da 12 litri 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 nel modo più efficace nella tua app.

Aggiorna la versione dell'SDK target della tua app

Per offrire alla tua app maggiore flessibilità su quando viene visualizzata la finestra di dialogo delle autorizzazioni, aggiorna l'app in modo che abbia come target Android 13 o versioni successive.

Attendi per mostrare la richiesta di autorizzazione alle notifiche

Prima di chiedere agli utenti di concedere eventuali autorizzazioni, consenti loro di familiarizzare con la tua app.

I nuovi utenti potrebbero voler esplorare l'app e comprendere in prima persona i vantaggi di ogni singola richiesta di notifica. Puoi attivare una richiesta di autorizzazione da un'azione utente. Nell'elenco che segue vengono riportati alcuni esempi dei casi in cui è il momento giusto per mostrare la richiesta di autorizzazione alle notifiche:

  • L'utente tocca il pulsante "campana di avviso".
  • L'utente sceglie di seguire l'account di social media di qualcuno.
  • 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() restituisce true, non è necessario che l'app mostri la schermata centrale, ovvero quella con il testo "Ricevi notifiche!".

In alternativa, puoi impostare una richiesta in modo che venga visualizzata 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 in cui l'utente avvia la tua app.

Dopo l&#39;accesso, l&#39;utente riceve un invito a ricevere notifiche sugli aggiornamenti della corsa. Dopo che l&#39;utente preme il pulsante
   Sono, l&#39;app richiede la nuova autorizzazione e viene visualizzata la finestra di dialogo
   di sistema
Figura 1. Un flusso di lavoro consigliato basato sull'utente per richiedere l'autorizzazione alle notifiche. Lo schermo centrale è necessario 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 lo scopo delle notifiche e perché l'utente dovrebbe 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 garantire trasparenza alle tue intenzioni e aumentare la probabilità che gli utenti concedano l'autorizzazione alle notifiche per la tua app.

Verificare se l'app può inviare notifiche

Prima che l'app invii una notifica, verifica se l'utente ha attivato le notifiche per l'app. A tale scopo, chiama il numero areNotificationsEnabled().

Utilizza 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 possono revocare l'autorizzazione in qualsiasi momento.