Mostra notifiche urgenti

La tua app potrebbe dover attirare urgentemente l'attenzione dell'utente in determinate situazioni. ad esempio una sveglia in corso o una chiamata in arrivo. Nelle app che hanno come target i dispositivi con Android 9 (livello API 28) o versioni precedenti, puoi gestire questo problema avviando un'attività mentre l'app è in background. Questo documento mostra come ottenere questo comportamento sui dispositivi con Android 10 (livello API 29) per Android 13 (livello API 33).

Aggiungi l'autorizzazione POST_NOTIFICATIONS

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

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

Una volta ottenuto questo, puoi creare un canale di notifica.

Creare un canale di notifica

Crea un canale di notifica per visualizzare correttamente le notifiche e consenti l'utente gestisce le notifiche nelle impostazioni dell'app. Per ulteriori informazioni canali di notifica, consulta Creare e gestire le notifiche canali di YouTube.

Crea i tuoi canali di notifica nel corso del tuo Application Metodo onCreate:

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 esegue la tua app per la prima volta, visualizza una schermata di sistema Informazioni app simile alla figura 1:

Un&#39;immagine che mostra la schermata Informazioni app, Notifica della tua app.
Figura 1. Notifiche nell'app App Schermata delle informazioni delle impostazioni di sistema dell'app.

Gestire le autorizzazioni per le notifiche

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

L'implementazione minima è la seguente:

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 attivata la finestra di dialogo mostrata nella figura 2:

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

Se l'utente accetta la richiesta di autorizzazione, la sezione Informazioni sull'app dell'app sarà simile alla figura 3:

Un&#39;immagine che mostra la schermata Informazioni app dopo aver concesso l&#39;autorizzazione alle notifiche
Figura 3. Autorizzazioni alle notifiche concesse.

Creare una notifica ad alta priorità

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

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 è simile alla figura 4:

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

Notifica continua

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

Se la notifica è in corso, ad esempio una telefonata, associare la notifica a un primo piano Google Cloud. 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);