Manejo de notificaciones push en Android

improve this page | report issue

Visión general

Antes que las aplicaciones Android puedan manejar las notificaciones push que reciban, es necesario configurar el soporte para Google Play Services. Una vez se haya configurado la aplicación, se puede utilizar la API de notificaciones que MobileFirst proporciona con el propósito de registrar y anular el registro de dispositivos y suscribir y anular la suscripción a etiquetas. En esta guía de aprendizaje, aprenderá a manejar el envío de notificaciones en aplicaciones Android.

**Requisitos previos: **

Ir a:

Configuración de notificaciones

Cree un nuevo proyecto de Android Studio o utilice uno que ya exista.

Si MobileFirst Native Android SDK todavía no está presente en el proyecto, siga las instrucciones en la guía de aprendizaje Adición de Mobile Foundation SDK para aplicaciones Android.

Configurar el proyecto

  1. En Android → Scripts de Gradle, seleccione el archivo build.gradle (Módulo: app) y añada las siguientes líneas a dependencies:

    com.google.android.gms:play-services-gcm:9.0.2
    
    • Nota: hay un defecto de Google conocido que impide el uso de la última versión de Play Services (actualmente la versión 9.2.0). Utilice una versión inferior.

    Y:

    compile group: 'com.ibm.mobile.foundation',
             name: 'ibmmobilefirstplatformfoundationpush',
             version: '8.0.+',
             ext: 'aar',
             transitive: true
    

    O en una sola línea:

    compile 'com.ibm.mobile.foundation:ibmmobilefirstplatformfoundationpush:8.0.+'
    
  2. En Android → app → manifiestos, abra el archivo AndroidManifest.xml.

    • Añada los siguientes permisos en la parte superior de la etiqueta manifest:

      <!-- Permissions -->
      <uses-permission android:name="android.permission.WAKE_LOCK" />
      
      <!-- GCM Permissions -->
      <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
      <permission
       	    android:name="your.application.package.name.permission.C2D_MESSAGE"
       	    android:protectionLevel="signature" />
      
    • Añada lo siguiente a la etiqueta application:

      <!-- GCM Receiver -->
      <receiver
            android:name="com.google.android.gms.gcm.GcmReceiver"
            android:exported="true"
            android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <category android:name="your.application.package.name" />
            </intent-filter>
      </receiver>
      
      <!-- MFPPush Intent Service -->
      <service
            android:name="com.ibm.mobilefirstplatform.clientsdk.android.push.api.MFPPushIntentService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
      </service>
      
      <!-- MFPPush Instance ID Listener Service -->
      <service
            android:name="com.ibm.mobilefirstplatform.clientsdk.android.push.api.MFPPushInstanceIDListenerService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.android.gms.iid.InstanceID" />
            </intent-filter>
      </service>
            
      <activity android:name="com.ibm.mobilefirstplatform.clientsdk.android.push.api.MFPPushNotificationHandler"
           android:theme="@android:style/Theme.NoDisplay"/>
      

      Nota: Asegúrese de sustituir your.application.package.name con el nombre de paquete real de su aplicación.

    • Añada el siguiente intent-filter a la actividad de la aplicación.

      <intent-filter>
          <action android:name="your.application.package.name.IBMPushNotification" />
          <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
      

API de notificaciones

Instancia de MFPPush

Todas las llamadas de API se deben realizar en una instancia de MFPPush. Esto se puede realizar creando un campo de nivel de clase como, por ejemplo, private MFPPush push = MFPPush.getInstance(); y a continuación, llamando a push.<api-call> a través de la clase.

De forma alternativa puede llamar a MFPPush.getInstance().<api_call> para cada instancia en la que necesita acceder a los métodos de API de push.

Manejadores de desafíos

Si el ámbito de push.mobileclient está correlacionado con la comprobación de seguridad, debe asegurarse de que existen manejadores de desafíos coincidentes registrados antes de utilizar las API de push.

Aprenda más sobre los manejadores de desafíos en la guía de aprendizaje de validación de credenciales.

Lado del cliente

Métodos Java Descripción
initialize(Context context); Inicia MFPPush con el contexto proporcionado.
isPushSupported(); Indica si el dispositivo da soporte a notificaciones push.
registerDevice(JSONObject, MFPPushResponseListener); Registra el dispositivo con el servicio de notificaciones push.
getTags(MFPPushResponseListener) Recupera las etiquetas disponibles en una instancia del servicio de notificaciones push.
subscribe(String[] tagNames, MFPPushResponseListener) Suscribe el dispositivo para las etiquetas especificadas.
getSubscriptions(MFPPushResponseListener) Recupera todas las etiquetas a las que el dispositivo está actualmente suscrito.
unsubscribe(String[] tagNames, MFPPushResponseListener) Anula la suscripción de una o varias etiquetas.
unregisterDevice(MFPPushResponseListener) Anula el registro del dispositivo del servicio notificaciones push.

Inicialización

Requerido para la aplicación de cliente para conectarse al servicio MFPPush con el contexto de aplicación correcto.

  • Primero se debe llamar al método de la API antes de utilizar cualquier otra API MFPPush.

  • Registra la función de retorno de llamada para manejar las notificaciones push recibidas.

MFPPush.getInstance().initialize(this);

Está push soportado

Comprueba si el dispositivo da soporte a las notificaciones push.

Boolean isSupported = MFPPush.getInstance().isPushSupported();

if (isSupported ) {
    // Push is supported
} else {
    // Push is not supported
}

Registrar el dispositivo

Registre el dispositivo para el servicio de notificaciones push.

MFPPush.getInstance().registerDevice(null, new MFPPushResponseListener<String>() {
    @Override
    public void onSuccess(String s) {
        // Successfully registered
    }

    @Override
    public void onFailure(MFPPushException e) {
        // Registration failed with error
    }
});

Obtener etiquetas

Recupere todas las etiquetas disponibles desde el servicio de notificaciones push.

MFPPush.getInstance().getTags(new MFPPushResponseListener<List<String>>() {
    @Override
    public void onSuccess(List<String> strings) {
        // Successfully retrieved tags as list of strings
    }

    @Override
    public void onFailure(MFPPushException e) {
        // Failed to receive tags with error
    }
});

Suscribir

Suscriba las etiquetas deseadas.

String[] tags = {"Tag 1", "Tag 2"};

MFPPush.getInstance().subscribe(tags, new MFPPushResponseListener<String[]>() {
    @Override
    public void onSuccess(String[] strings) {
        // Subscribed successfully
    }

    @Override
    public void onFailure(MFPPushException e) {
        // Failed to subscribe
    }
});

Obtener suscripciones

Recupere las etiquetas a las que el dispositivo está actualmente suscrito.

MFPPush.getInstance().getSubscriptions(new MFPPushResponseListener<List<String>>() {
    @Override
    public void onSuccess(List<String> strings) {
        // Successfully received subscriptions as list of strings
    }

    @Override
    public void onFailure(MFPPushException e) {
        // Failed to retrieve subscriptions with error
    }
});

Anular la suscripción

Anule la suscripción de etiquetas.

String[] tags = {"Tag 1", "Tag 2"};

MFPPush.getInstance().unsubscribe(tags, new MFPPushResponseListener<String[]>() {
    @Override
    public void onSuccess(String[] strings) {
        // Unsubscribed successfully
    }

    @Override
    public void onFailure(MFPPushException e) {
        // Failed to unsubscribe
    }
});

Anular el registro

Anule el registro del dispositivo de una instancia de servicio de notificaciones push.

MFPPush.getInstance().unregisterDevice(new MFPPushResponseListener<String>() {
    @Override
    public void onSuccess(String s) {
        disableButtons();
        // Unregistered successfully
    }

    @Override
    public void onFailure(MFPPushException e) {
        // Failed to unregister
    }
});

Manejar una notificación push

Con el propósito de manejar una notificación push será necesario configurar un MFPPushNotificationListener. Esto se puede conseguir implementando uno de los métodos siguientes.

Primera opción

En la actividad en que desea manejar las notificaciones push.

  1. Añada implements MFPPushNofiticationListener a la declaración de la clase.
  2. Establezca la clase para ser el escucha llamando a MFPPush.getInstance().listen(this) en el método onCreate.

  3. Necesitará añadir el siguiente método required:

    @Override
    public void onReceive(MFPSimplePushNotification mfpSimplePushNotification) {
         // Handle push notification here
    }
    
  4. En este método recibirá MFPSimplePushNotification y podrá manejar la notificación para el comportamiento deseado.

Segunda opción

Cree un escucha llamando a listen(new MFPPushNofiticationListener()) en una instancia de MFPPush tal como se indica a continuación:

MFPPush.getInstance().listen(new MFPPushNotificationListener() {
    @Override
    public void onReceive(MFPSimplePushNotification mfpSimplePushNotification) {
        // Handle push notification here
    }
});

Imagen de la aplicación de ejemplo

Aplicación de ejemplo

Pulse para descargar el proyecto de Android Studio.

Uso de ejemplo

Siga el archivo README.md de ejemplo para obtener instrucciones.

Last modified on November 08, 2017