Notificaciones en Android con Ejemplo

La notificación es un tipo de mensaje, alerta o estado de una aplicación (probablemente ejecutándose en segundo plano) que está visible o disponible en los elementos de la interfaz de usuario de Android. Esta aplicación podría estar ejecutándose en segundo plano, pero el usuario no la está utilizando. El propósito de una notificación es notificar al usuario sobre un proceso que se inició en la aplicación por parte del usuario o del sistema. Este artículo podría ayudar a alguien que se esfuerza por crear una notificación con fines de desarrollo. 

Las notificaciones pueden tener varios formatos y diseños según el desarrollador. En general, uno debe haber presenciado estos cuatro tipos de notificaciones:

  1. Notificación de la barra de estado (aparece en el mismo diseño que la hora actual, porcentaje de batería)
  2. Cajón de notificaciones Notificación (aparece en el menú desplegable)
  3. Notificación de aviso (aparece en la pantalla superpuesta, por ejemplo: notificación de Whatsapp, mensajes OTP)
  4. Notificación de pantalla de bloqueo (supongo que lo sabes)

Different formats of notification

En este artículo, discutiremos cómo producir notificaciones en Kotlin

Implementación paso a paso

Paso 1: crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.

Paso 2: trabajar con el archivo activity_main.xml

Vaya al archivo activity_main.xml y consulte el siguiente código. En este paso, vamos a diseñar nuestra página de diseño. Aquí, usaremos RelativeLayout para obtener la Vista de desplazamiento del archivo Kotlin. A continuación se muestra el código para el archivo activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
 
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Send Notification" />
 
</RelativeLayout>

Paso 3: Crear una nueva actividad vacía

Artículo de referencia: ¿Cómo crear métodos Constructor, Getter/Setter y nueva actividad en Android Studio usando accesos directos? 

Nombra la actividad como afterNotification . Cuando alguien hace clic en la notificación, esta actividad se abrirá en nuestra aplicación, es decir, el usuario será redirigido a esta página. A continuación se muestra el código para el archivo activity_after_notification.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".afterNotification">
 
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Welcome To GeeksforGeeks"
        android:textSize="15sp"
        android:textStyle="bold" />
 
</RelativeLayout>

Nota 1 :Sin configurar los canales de notificación, no puede generar notificaciones para aplicaciones con API de Android >=26. Para ellos es obligatorio generar un canal de notificaciones. Las aplicaciones con API <26 no necesitan canales de notificación, solo necesitan un generador de notificaciones. Se supone que cada canal tiene un comportamiento particular que será aplicable a todas las notificaciones que forman parte de él. Por lo tanto, cada canal tendrá una ID de canal que básicamente actuará como un identificador único para este canal, lo que será útil si el usuario desea diferenciar un canal de notificación en particular. Por el contrario, el generador de notificaciones proporciona una forma conveniente de configurar los diversos campos de una notificación y generar vistas de contenido utilizando la plantilla de diseño de notificación de la plataforma, pero no puede dirigirse a un canal de notificación en particular. 

Nota 2: si ha consultado cualquier otra documentación o cualquier otro blog antes de este, es posible que los haya notado apelando a implementar la siguiente dependencia «com.android.support:support-compat:28.0.0» . Lo que he experimentado personalmente es que no hay necesidad de implementarlo, las cosas van muy bien sin esto también.

Paso 5: trabajar con el archivo MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.widget.Button
import android.widget.RemoteViews
import androidx.appcompat.app.AppCompatActivity
 
class MainActivity : AppCompatActivity() {
 
    // declaring variables
    lateinit var notificationManager: NotificationManager
    lateinit var notificationChannel: NotificationChannel
    lateinit var builder: Notification.Builder
    private val channelId = "i.apps.notifications"
    private val description = "Test notification"
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        // accessing button
        val btn = findViewById<Button>(R.id.btn)
 
        // it is a class to notify the user of events that happen.
        // This is how you tell the user that something has happened in the
        // background.
        notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
 
        // onClick listener for the button
        btn.setOnClickListener {
 
            // pendingIntent is an intent for future use i.e after
            // the notification is clicked, this intent will come into action
            val intent = Intent(this, afterNotification::class.java)
 
            // FLAG_UPDATE_CURRENT specifies that if a previous
            // PendingIntent already exists, then the current one
            // will update it with the latest intent
            // 0 is the request code, using it later with the
            // same method again will get back the same pending
            // intent for future reference
            // intent passed here is to our afterNotification class
            val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
 
            // RemoteViews are used to use the content of
            // some different layout apart from the current activity layout
            val contentView = RemoteViews(packageName, R.layout.activity_after_notification)
 
            // checking if android version is greater than oreo(API 26) or not
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                notificationChannel = NotificationChannel(channelId, description, NotificationManager.IMPORTANCE_HIGH)
                notificationChannel.enableLights(true)
                notificationChannel.lightColor = Color.GREEN
                notificationChannel.enableVibration(false)
                notificationManager.createNotificationChannel(notificationChannel)
 
                builder = Notification.Builder(this, channelId)
                        .setContent(contentView)
                        .setSmallIcon(R.drawable.ic_launcher_background)
                        .setLargeIcon(BitmapFactory.decodeResource(this.resources, R.drawable.ic_launcher_background))
                        .setContentIntent(pendingIntent)
            } else {
 
                builder = Notification.Builder(this)
                        .setContent(contentView)
                        .setSmallIcon(R.drawable.ic_launcher_background)
                        .setLargeIcon(BitmapFactory.decodeResource(this.resources, R.drawable.ic_launcher_background))
                        .setContentIntent(pendingIntent)
            }
            notificationManager.notify(1234, builder.build())
        }
    }
}

Con esto, ahora hemos creado con éxito una «Notificación» para nuestra aplicación. Tenga en cuenta que los parámetros enumerados en el código anterior son obligatorios y que la ausencia de un solo parámetro podría provocar el bloqueo o el inicio de la aplicación. El título del contenido, el texto del contenido y el icono pequeño son parámetros personalizables, pero también son obligatorios. Uno puede cambiar sus valores según el requisito.

Producción:

Publicación traducida automáticamente

Artículo escrito por Abhishek7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *