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:
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:
Se l'utente accetta la richiesta di autorizzazione, la sezione Informazioni app appare come in figura 3:
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(0, 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:
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);
Prendi in considerazione l'utilizzo degli aggiornamenti in tempo reale
Le notifiche in corso urgenti possono trarre vantaggio da una maggiore visibilità. Valuta la possibilità di promuovere le notifiche in corso urgenti come Aggiornamenti in tempo reale per visualizzarle in varie interfacce utente di sistema.