Al implementar el SDK de notificaciones push de Alibaba Cloud, es crucial seguir ciertos pasos para evitar errores comunes. A continuación, se detallan consideraciones técnicas esenciales para una integración exitosa.
Pasos clave para la integración
- Integrar canales de fabricante: Es obligatorio configurar los canales específicos de los fabricantes de dispositivos para garantizar la entrega de notificaciones.
- Implementar la clase principal de la aplicación: Asegúrese de crear una clase que extienda la aplicación base para manejar la inicialización.
- Inicializar adecuadamente en la clase principal: Configure el canal de notificaciones y registre proveedores de push durante el ciclo de vida de la aplicación.
- Implementar actividades y receptores personalizados: Cree clases para manejar notificaciones emergentes y mensajes entrantes.
- Configurar canales en el backend: Defina los canales de notificación en la consola de Alibaba Cloud para permitir el envío de mensajes.
- Completar todos los campos al probar vía web: Al realizar pruebas desde la consola web, asegúrese de incluir toda la información requerida para simular notificaciones reales.
Ejemplos de código en Android
Inicialización en la clase principal
public class MiAplicacion extends android.app.Application {
@Override
public void onCreate() {
super.onCreate();
configurarCanalCloud(this);
registrarMiPush(this, "tu_app_id", "tu_app_key");
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
android.app.NotificationManager gestorNotificaciones =
(android.app.NotificationManager) getSystemService(android.content.Context.NOTIFICATION_SERVICE);
String idCanal = "canal_alertas";
String nombreCanal = "Alertas de Eventos";
String descripcionCanal = "Notificaciones para eventos programados";
int importancia = android.app.NotificationManager.IMPORTANCE_HIGH;
android.app.NotificationChannel canal = new android.app.NotificationChannel(idCanal, nombreCanal, importancia);
canal.setDescription(descripcionCanal);
canal.enableLights(true);
canal.setLightColor(android.graphics.Color.BLUE);
canal.enableVibration(true);
canal.setVibrationPattern(new long[]{150, 300, 450, 600, 750});
gestorNotificaciones.createNotificationChannel(canal);
}
}
private void configurarCanalCloud(android.content.Context contexto) {
// Lógica de configuración del canal de cloud
}
private void registrarMiPush(android.content.Context contexto, String appId, String appKey) {
// Lógica de registro con MiPush
}
}
Actividad para notificaciones emergentes
package com.ejemplo.miapp;
import android.os.Bundle;
import android.util.Log;
import com.alibaba.sdk.android.push.AndroidPopupActivity;
import java.util.Map;
public class ActividadNotificacion extends AndroidPopupActivity {
private static final String ETIQUETA = "ActividadNotificacion";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onSysNoticeOpened(String titulo, String resumen, Map<string string=""> mapaExtra) {
Log.d(ETIQUETA, "Notificación abierta - Título: " + titulo + ", Contenido: " + resumen);
}
}</string>
Receptor personalizado para mensajes
package com.ejemplo.miapp;
import android.content.Context;
import android.util.Log;
import com.alibaba.sdk.android.push.MessageReceiver;
import com.alibaba.sdk.android.push.notification.CPushMessage;
import java.util.Map;
public class ReceptorMensajesPush extends MessageReceiver {
private static final String TAG = "ReceptorMensajesPush";
@Override
public void onNotification(Context contexto, String titulo, String resumen, Map<string string=""> mapaExtra) {
Log.i(TAG, "Notificación recibida - Título: " + titulo + ", Resumen: " + resumen);
// Procesar la notificación según sea necesario
}
@Override
public void onMessage(Context contexto, CPushMessage mensaje) {
Log.i(TAG, "Mensaje entrante - ID: " + mensaje.getMessageId() + ", Contenido: " + mensaje.getContent());
}
@Override
public void onNotificationOpened(Context contexto, String titulo, String resumen, String mapaExtra) {
Log.i(TAG, "Notificación abierta por usuario");
}
@Override
protected void onNotificationClickedWithNoAction(Context contexto, String titulo, String resumen, String mapaExtra) {
Log.w(TAG, "Notificación clickeada sin acción definida");
}
@Override
protected void onNotificationReceivedInApp(Context contexto, String titulo, String resumen, Map<string string=""> mapaExtra, int tipoApertura, String actividadApertura, String urlApertura) {
Log.i(TAG, "Notificación recibida dentro de la app - Tipo: " + tipoApertura);
}
@Override
protected void onNotificationRemoved(Context contexto, String idMensaje) {
Log.d(TAG, "Notificación eliminada del sistema");
}
}</string></string>