Cómo crear notificaciones sujetas a limitaciones temporales

Es posible que tu app necesite llamar la atención del usuario con urgencia como una alarma en curso o una llamada entrante. En aplicaciones que se orientan a dispositivos que se ejecutan Android 9 (nivel de API 28) o versiones anteriores, puedes controlar esto iniciando un mientras la app está en segundo plano. En este documento, se muestra cómo lograr este comportamiento en dispositivos con Android 10 (nivel de API 29) a Android 13 (nivel de API 33)

Agrega el permiso POST_NOTIFICATIONS

A partir de Android 13, agrega la siguiente línea a tu Archivo AndroidManifest.xml:

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

Una vez que lo tengas, podrás crear un canal de notificaciones.

Cómo crear un canal de notificaciones

Crea un canal de notificaciones para mostrar correctamente tus notificaciones y dejar que las usuario administra las notificaciones en la configuración de la aplicación. Para obtener más información canales de notificaciones, consulta Crear y administrar notificaciones canales.

Crea tus canales de notificaciones en la clase Application Método 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)
    }
}

Cuando el usuario ejecute tu app por primera vez, verá algo como la figura 1. En la pantalla del sistema Información de la app, haz lo siguiente:

Una imagen que muestra la pantalla Información de la app, Notificaciones de tu app.
Figura 1: Sección Notificaciones de la aplicación Info de la configuración del sistema de la app.

Administrar permisos de notificaciones

A partir de Android 13, solicita permisos de notificaciones antes muestras notificaciones a los usuarios.

La implementación mínima se ve de la siguiente manera:

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")
}

Si tu dispositivo ejecuta Android 13, cuando se presiona el botón Request permission, se activa el diálogo que se muestra en la Figura 2:

Imagen que muestra el diálogo de solicitud de permiso
Figura 2: Diálogo del sistema para la notificación solicitud de permiso.

Si el usuario acepta la solicitud de permiso, la sección Información de la app buscará como en la figura 3:

Imagen que muestra la pantalla Información de la app después de otorgar el permiso de notificación
Figura 3: Se otorgaron los permisos de notificaciones.

Cómo crear una notificación de prioridad alta

Cuando crees la notificación, incluye un título y un mensaje descriptivos.

El siguiente ejemplo contiene una notificación:

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())
}

Cómo mostrar la notificación al usuario

Llamar a la función showNotification() activa la notificación de la siguiente manera:

Kotlin

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

En este ejemplo, la notificación se ve como la que aparece en la figura 4:

Una imagen que muestra una notificación de prioridad alta
Figura 4: Una notificación de prioridad alta.

Notificación en curso

Cuando le muestres tu notificación al usuario, este podrá aceptarla o descartarla la alerta o el recordatorio de tu aplicación. Por ejemplo, el usuario puede aceptar o rechazar un llamada telefónica entrante.

Si tu notificación es constante, como una llamada entrante, asociar la notificación con un primer plano servicio. El siguiente fragmento de código se muestra cómo mostrar una notificación asociada con un servicio en primer plano:

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);