Android: notificación push

Una notificación es un mensaje que puede mostrar al usuario fuera de la interfaz de usuario normal de su aplicación. Puede crear sus propias notificaciones en Android muy fácilmente.

Android proporciona NotificationManagerclase para este propósito. Para usar esta clase, debe crear una instancia de un objeto de esta clase solicitando al sistema Android a través degetSystemService() method. Su sintaxis se da a continuación:

NotificationManager NM;
NM=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

Después de eso, creará una Notificación a través de Notification class y especifique sus atributos como icono, título y hora, etc. Su sintaxis se da a continuación:

Notification notify = new Notification(android.R.drawable.stat_notify_more,title,System.currentTimeMillis());

Lo siguiente que debe hacer es crear un PendingIntentpasando el contexto y la intención como parámetro. Al otorgar un PendingIntent a otra aplicación, le otorga el derecho a realizar la operación que ha especificado como si la otra aplicación fuera usted mismo.

PendingIntent pending = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(),0);

Lo último que debes hacer es llamar setLatestEventInfométodo de la clase Notificación y pasar la intención pendiente junto con el asunto de la notificación y los detalles del cuerpo. Su sintaxis se da a continuación. Y finalmente llame al método de notificación de la clase NotificationManager.

notify.setLatestEventInfo(getApplicationContext(), subject, body,pending);
NM.notify(0, notify);

Además del método de notificación, hay otros métodos disponibles en la clase NotificationManager. Se enumeran a continuación:

No Señor Método y descripción
1

cancel(int id)

Este método cancela una notificación mostrada anteriormente.

2

cancel(String tag, int id)

Este método también cancela una notificación mostrada anteriormente.

3

cancelAll()

Este método cancela todas las notificaciones mostradas anteriormente.

4

notify(int id, Notification notification)

Este método publica una notificación que se mostrará en la barra de estado.

5

notify(String tag, int id, Notification notification)

Este método también publica una notificación para que se muestre en la barra de estado.

Ejemplo

El siguiente ejemplo demuestra el uso de la clase NotificationManager. Contiene una aplicación básica que le permite crear una notificación.

Para experimentar con este ejemplo, debe ejecutarlo en un dispositivo real o en un emulador.

Pasos Descripción
1 Utilizará Android Studio para crear una aplicación de Android en una aplicación packagecom.example.sairamkrishna.myapplication.
2 Modifique el archivo src / MainActivity.java para agregar el código de notificación.
3 Modifique el archivo XML de diseño res / layout / activity_main.xml agregue cualquier componente GUI si es necesario.
4 Ejecute la aplicación y elija un dispositivo Android en ejecución e instale la aplicación en él y verifique los resultados.

Aquí está el contenido de MainActivity.java.

En el siguiente código abc indica el logo de tutorialspoint.com
package com.example.sairamkrishna.myapplication;

import android.app.Notification;
import android.app.NotificationManager;

import android.content.Context;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;

import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends ActionBarActivity {
   EditText ed1,ed2,ed3;
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      ed1=(EditText)findViewById(R.id.editText);
      ed2=(EditText)findViewById(R.id.editText2);
      ed3=(EditText)findViewById(R.id.editText3);
      Button b1=(Button)findViewById(R.id.button);

      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            String tittle=ed1.getText().toString().trim();
            String subject=ed2.getText().toString().trim();
            String body=ed3.getText().toString().trim();

            NotificationManager notif=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
            Notification notify=new Notification.Builder
               (getApplicationContext()).setContentTitle(tittle).setContentText(body).
               setContentTitle(subject).setSmallIcon(R.drawable.abc).build();
                
               notify.flags |= Notification.FLAG_AUTO_CANCEL;
               notif.notify(0, notify);
         }
      });
   }
}

Aquí está el contenido de activity_main.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" 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">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Notification"
      android:id="@+id/textView"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="30dp" />
      .
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials Point"
      android:id="@+id/textView2"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:textSize="35dp"
      android:textColor="#ff16ff01" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:layout_below="@+id/textView2"
      android:layout_alignLeft="@+id/textView2"
      android:layout_alignStart="@+id/textView2"
      android:layout_marginTop="52dp"
      android:layout_alignRight="@+id/textView2"
      android:layout_alignEnd="@+id/textView2"
      android:hint="Name" />
   
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText2"
      android:hint="Subject"
      android:layout_below="@+id/editText"
      android:layout_alignLeft="@+id/editText"
      android:layout_alignStart="@+id/editText"
      android:layout_alignRight="@+id/editText"
      android:layout_alignEnd="@+id/editText" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:inputType="textPersonName"
      android:ems="10"
      android:id="@+id/editText3"
      android:hint="Body"
      android:layout_below="@+id/editText2"
      android:layout_alignLeft="@+id/editText2"
      android:layout_alignStart="@+id/editText2"
      android:layout_alignRight="@+id/editText2"
      android:layout_alignEnd="@+id/editText2" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Notification"
      android:id="@+id/button"
      android:layout_marginTop="77dp"
      android:layout_below="@+id/editText3"
      android:layout_alignRight="@+id/textView"
      android:layout_alignEnd="@+id/textView" />

</RelativeLayout>

Aquí está el contenido de AndroidManifest.xml.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

Intentemos ejecutar nuestra aplicación. Para ejecutar la aplicación desde Android Studio, abra uno de los archivos de actividad de su proyecto y haga clic en el icono Ejecutar de la barra de herramientas. Antes de iniciar su aplicación, Android Studio mostrará la siguiente ventana para seleccionar una opción donde desea ejecutar su aplicación de Android.

Ahora complete el campo con el título, el tema y el cuerpo. Esto se ha mostrado a continuación en la figura:

Ahora haga clic en el botón de notificación y verá una notificación en la barra de notificaciones superior. Se ha mostrado a continuación:

Ahora desplácese hacia abajo en la barra de notificaciones y vea la notificación. Esto se ha mostrado a continuación en la figura: