Mostra notifiche urgenti

In determinate situazioni, ad esempio nel caso di un avviso continuo o di una chiamata in arrivo, l'app potrebbe dover attirare urgentemente l'attenzione dell'utente. Nelle app destinate a dispositivi con Android 9 (livello API 28) o versioni precedenti, puoi gestire questo aspetto avviando un'attività mentre l'app è in background. Questo documento illustra come ottenere questo comportamento sui dispositivi con Android 10 (livello API 29) fino ad Android 13 (livello API 33).

Aggiungi l'autorizzazione POST_NOTIFICATIONS

A partire da Android 13, aggiungi la seguente riga al file AndroidManifest.xml:

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <application ...>
        ...
    </application>
</manifest>

Dopodiché crea un canale di notifica.

Crea un canale di notifica

Crea un canale di notifica per visualizzare correttamente le notifiche e consentire all'utente di gestirle nelle impostazioni dell'app. Per saperne di più sui canali di notifica, consulta Crea e gestisci i canali di notifica.

Crea i canali di notifica nel metodo onCreate della classe Application:

Kotlin

class DACapp : Application() {
    override fun onCreate() {
        super.onCreate()
        val channel = NotificationChannel(
            CHANNEL_ID,
            "High priority notifications",
            NotificationManager.IMPORTANCE_HIGH
        )

        val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
        notificationManager.createNotificationChannel(channel)
    }
}

Quando l'utente apre la tua app per la prima volta, nella schermata di sistema Informazioni app viene visualizzata una schermata simile a quella della figura 1:

Un&#39;immagine che mostra la schermata Informazioni app e Notifiche dell&#39;app.
Figura 1. Sezione Notifiche nella schermata Informazioni app delle impostazioni di sistema dell'app.

Gestisci le autorizzazioni alle notifiche

A partire da Android 13, richiedi le autorizzazioni alle notifiche prima di mostrare le notifiche agli utenti.

L'implementazione minima ha il seguente aspetto:

Kotlin

val permissionLauncher = rememberLauncherForActivityResult(
    contract = ActivityResultContracts.RequestPermission(),
    onResult = { hasNotificationPermission = it }
)
...
Button(
    onClick = {
        if (!hasNotificationPermission) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
                permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS)
            }
        }
    },
) {
    Text(text = "Request permission")
}

Se il tuo dispositivo è dotato di Android 13, toccando il pulsante Request permission viene visualizzata la finestra di dialogo mostrata nella figura 2:

Un&#39;immagine che mostra la finestra di richiesta di autorizzazione
Figura 2. Finestra di dialogo di sistema per la richiesta di autorizzazione alle notifiche.

Se l'utente accetta la richiesta di autorizzazione, la sezione Informazioni app appare come in figura 3:

Un&#39;immagine che mostra la schermata Informazioni app dopo che è stata concessa la richiesta di autorizzazione alle notifiche
Figura 3. Autorizzazioni alle notifiche concesse.

Crea una notifica ad altra priorità

Quando crei la notifica, includi un titolo descrittivo e un messaggio.

Il seguente esempio contiene una notifica:

Kotlin

private fun showNotification() {
    val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager

    val notificationBuilder =
        NotificationCompat.Builder(this, CHANNEL_ID)
            .setSmallIcon(R.drawable.baseline_auto_awesome_24)
            .setContentTitle("HIGH PRIORITY")
            .setContentText("Check this dog puppy video NOW!")
            .setPriority(NotificationCompat.PRIORITY_HIGH)
            .setCategory(NotificationCompat.CATEGORY_RECOMMENDATION)

    notificationManager.notify(666, notificationBuilder.build())
}

Mostra la notifica all'utente

La chiamata alla funzione showNotification() attiva la notifica come segue:

Kotlin

Button(onClick = { showNotification() }) {
    Text(text = "Show notification")
}

La notifica in questo esempio appare come in figura 4:

Un&#39;immagine che mostra una notifica ad alta priorità
Figura 4. Una notifica ad alta priorità.

Notifica continua

Quando mostri la notifica all'utente, può confermare o ignorare l'avviso o il promemoria dell'app. Ad esempio, l'utente può accettare o rifiutare una chiamata in arrivo.

Se la notifica è continua, come nel caso di una chiamata in arrivo, associa la notifica a un servizio in primo piano. Il seguente snippet di codice mostra come visualizzare una notifica associata a un servizio in primo piano:

Kotlin

// Provide a unique integer for the "notificationId" of each notification.
startForeground(notificationId, notification)

Java

// Provide a unique integer for the "notificationId" of each notification.
startForeground(notificationId, notification);