Desarrollo Móvil

Cómo hacer notificaciones push en Android fácil

Mira como hacer notificaciones push para tu aplicación móvil de Android.  

Publicado el 06 de Junio de 2016
Compartir

En este post vamos a ver cómo crear y lanzar notificaciones en Android . Las Notificaciones Push son mensajes que recibimos en el dispositivo y que han sido emitidos desde un servidor que gestiona el envío de información relevante al usuario.

Las notificaciones por tanto ofrecen al usuario información en tiempo real sobre novedades que están ocurriendo en los datos de la aplicación, por ejemplo que ha recibido un nuevo mensaje de otro usuario o que se ha publicado una nueva oferta que puede interesarle o por ejemplo que ha llegado la hora de comer y le sugerimos algún restaurante próximo a donde se encuentra.

Lo que vamos a crear, va a ser una aplicación en la que pulsando un botón, lanzaremos una notificación a la barra de notificaciones mostrando un texto.

En este caso vamos a usar dos Activities (pantallas) el principal y uno que mostraremos al pulsar en el notificación.

Aprende a desarrollar apps para iOS y Android
Comienza 15 días gratis en OpenWebinars y accede cursos, talleres y laboratorios prácticos de Swift y Kotlin para crear tus propias aplicaciones.
Comenzar gratis ahora

1. Diseño de la Interfaz de Usuario

Una vez creado nuestro proyecto, tendremos una clase princial MainActivity con su correspondiente layout (interfaz de usuario). En este layout vamos a incluir sólo un objeto de tipo Button, que será el botón que nos permita lanzar al Notificación:

<?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" android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

 <Button
 android:id="@+id/btnMostrarNotificacion"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="Mostrar Notificacion" />
</RelativeLayout>

Tendremos por tanto un diseño como el que se muestra en la siguiente imagen:

Imagen 0 en Cómo hacer notificaciones push en Android fácil

Y en el otro layout crearemos un TextView en el que aparezca un mensaje, indicando que se ha recibido la Notificación:
 

<?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" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.example.jorge.myapplication.MensajeActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Notificación Recibida"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

Imagen 1 en Cómo hacer notificaciones push en Android fácil

2. Creando la notificación

Una vez diseñado el layout nos dirigimos a la clase Java de nuestro MainActivity e inicializamos nuestro botón asignándolo el evento OnClickListener. Asignamos dicho evento al botón, mediante el método setOnClickListener , tal y como se muestra a continuación:

public class MainActivity extends AppCompatActivity {
    Button mostrarNotificacion;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mostrarNotificacion = (Button)findViewById(R.id.btnMostrarNotificacion);
        mostrarNotificacion.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
          }
        });
    }
}


Ahora, procedemos a crear nuestra notificación. Para ello usaremos  la clase Notification.Builder y la clase NotificationManager .
 

NotificationCompat.Builder mBuilder;
NotificationManager mNotifyMgr =(NotificationManager) getApplicationContext().getSystemService(NOTIFICATION_SERVICE);


La notificación consta de varios elementos visuales como son: el icono de la misma, el título y la descripción. Existe además un componente que gestiona el Activity o pantalla que se lanza cuando un usuario hace click sobre la notificación, hablamos del componente PendingIntent :
 

int icono = R.mipmap.ic_launcher;
Intent intent = new Intent(MainActivity.this, MensajeActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0,intent, 0);

En este caso, en el código anterior podemos observar que se ha definido un Activity, llamado MensajeActivity y que será el Activity que se lance cuando el usuario haga click en la notificación

A continuación, vamos a diseñar nuestra notificación; para asignamos al objeto mBuilder anteriormente creado al método NotificationCompat.Builder() , al cual le debemos pasar como parámetro el contexto desde donde se va a lanzar la notificación, en nuestro caso, usaremos getApplicationContext () quedando la siguiente línea de código:

mBuilder = new NotificationCompat.Builder(getApplicationContext());

A continuación, vamos a proceder a añadirle a la notificación el icono, los textos y la acción:

  • setContentIntent (pendingIntent): Este método nos permite que al hacer click sobre la notificación se abra el Activity que definimos en el PendingIntent anteriormente creado.
     
  • setSmallIcon (icono): Este método añade a nuestra notificación el icono que inicializamos anteriormente.
     
  • setContentTitle (“Openwebinars”) : Añade el título de la notificación.
     
  • setContentText(“Tienes 1 nuevo mensaje”): Añade el mensaje descriptivo a la notificación.
     
  • setVibrate(new long[] {100, 250, 100, 500}): Esto hace que cuando salte la notificación vibre  nuestro teléfono.
     
  • setAutoCancel(true): este método hace que al hacer click sobre la notificación esta desaparezca.
     

Al añadir todos estos métodos nos queda un bloque de código como el siguiente:
 

mBuilder =new NotificationCompat.Builder(getApplicationContext())
                .setContentIntent(pendingIntent)
                .setSmallIcon(icono)
                .setContentTitle("Titulo")
                .setContentText("Hola que tal?")
                .setVibrate(new long[] {100, 250, 100, 500})
                .setAutoCancel(true);

Imagen 2 en Cómo hacer notificaciones push en Android fácil


Ya sólo falta crear la notificación. Para ello invocamos al NotificationManager que creamos arriba cuyo variable declaramos con el nombre mNotifyMgr y le añadimos el método . notify () al cual hay que pasarle como parámetros un número entero que actúa como identificador único de la notificación, en nuestro caso le pondremos 1; y el segundo parámetro NotificationCompat.Builder creado al comienzo con el nombre de variable mBuilder , quedando la siguiente línea de código:
 

mNotifyMgr.notify(1, mBuilder.build());

Acelera tus desarrollos de software
Formaciones prácticas, avanzadas y actualizadas para que tu equipo domine las herramientas más relevantes para crear aplicaciones móviles en iOS y Android con Swift, Java y Kotlin.
Solicitar más información

A continuación se muestra el código completo:

public class MainActivity extends AppCompatActivity {
    Button mostrarNotificacion;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mostrarNotificacion=(Button)findViewById(R.id.btnMostrarNotificacion);
        mostrarNotificacion.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                NotificationCompat.Builder mBuilder;
                NotificationManager mNotifyMgr =(NotificationManager) getApplicationContext().getSystemService(NOTIFICATION_SERVICE);

                int icono = R.mipmap.ic_launcher;
                Intent i=new Intent(MainActivity.this, MensajeActivity.class);
                PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, i, 0);

                mBuilder =new NotificationCompat.Builder(getApplicationContext())
                                .setContentIntent(pendingIntent)
                                .setSmallIcon(icono)
                                .setContentTitle("Titulo")
                                .setContentText("Hola que tal?")
                                .setVibrate(new long[] {100, 250, 100, 500})
                                .setAutoCancel(true);



                mNotifyMgr.notify(1, mBuilder.build());

            }
        });
    }
}

Compartir este post

También te puede interesar...

Programación en Android

Curso de Android Online

11 horas y 34 minutos · Curso

Aprende a programar en Android y Java para crear aplicaciones móviles desde cero de manera profesional. Pasa tu idea al código, conéctela con API Rest, …

  • Desarrollo Móvil
Artículos
Ver todos