Skip to content

Actualizaciones en vivo para Android

Aprende a utilizar las actualizaciones en vivo de Android en el SDK de Braze, también conocidas como notificaciones centradas en el progreso. Estas notificaciones son similares a las actividades en vivo del SDK Swift de Braze, lo que te permite mostrar notificaciones interactivas en la pantalla de bloqueo. Android 16 introduce notificaciones centradas en el progreso para ayudar a los usuarios a realizar fácilmente un seguimiento de los recorridos iniciados por el usuario, de principio a fin.

Cómo funciona

Puedes usar la interfaz IBrazeNotificationFactory para personalizar cómo se muestran las notificaciones push de Braze. Al extender BrazeNotificationFactory, Braze llamará al método createNotification() de tu fábrica antes de que la notificación se muestre al usuario. A continuación, pasará una carga útil que contiene pares clave-valor personalizados enviados a través del panel de Braze o la REST API.

Mostrar una Live Update

En esta sección, colaborarás con Superb Owl, el anfitrión de un nuevo programa de juegos donde equipos de rescate de vida silvestre compiten para ver quién puede salvar la mayor cantidad de búhos. Buscan aprovechar las Live Updates en su aplicación Android, para poder mostrar el estado de un partido en curso y realizar actualizaciones dinámicas a la notificación en tiempo real.

Un ejemplo de Live Update de Android

Requisitos previos

Antes de poder utilizar esta característica, tendrás que integrar el SDK de Android Braze.

Paso 1: Crear una fábrica de notificaciones personalizada

En tu aplicación, crea un nuevo archivo llamado MyCustomNotificationFactory.kt que extienda BrazeNotificationFactory para manejar cómo se muestran las Braze Live Updates.

En el siguiente ejemplo, Superb Owl creó una fábrica de notificaciones personalizada para mostrar una Live Update para partidos en curso. En el siguiente paso, crearás un nuevo método llamado getTeamInfo para mapear los datos de un equipo a la actividad.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class MyCustomNotificationFactory : IBrazeNotificationFactory {
    override fun createNotification(payload: BrazeNotificationPayload): Notification? {
        val notificationBuilder = populateNotificationBuilder(payload)
        val context = payload.context ?: return null

        if (notificationBuilder == null) {
            brazelog { "Notification could not be built. Returning null as created notification." }
            return null
        }
        notificationBuilder.setContentTitle("Android Live Updates").setContentText("Ongoing updates below")
        setProgressStyle(notificationBuilder, context)
        return notificationBuilder.build()
    }

    private fun setProgressStyle(notificationBuilder: NotificationCompat.Builder, context: Context) {
        val style = NotificationCompat.ProgressStyle()
            .setStyledByProgress(false)
            .setProgress(200)
            .setProgressTrackerIcon(IconCompat.createWithResource(context, R.drawable.notification_small_icon))
            .setProgressSegments(
                mutableListOf(
                    NotificationCompat.ProgressStyle.Segment(1000).setColor(Color.GRAY),
                    NotificationCompat.ProgressStyle.Segment(200).setColor(Color.BLUE),
                )
            )
            .setProgressPoints(
                mutableListOf(
                    NotificationCompat.ProgressStyle.Point(60).setColor(Color.RED),
                    NotificationCompat.ProgressStyle.Point(560).setColor(Color.GREEN)
                )
            )

        notificationBuilder.setStyle(style)
    }
}

Paso 2: Mapear datos personalizados

En MyCustomNotificationFactory.kt, crea un nuevo método para manejar los datos cuando se muestran las Live Updates.

Superb Owl creó el siguiente método para mapear el nombre y el logo de cada equipo a las Live Updates expandidas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class CustomNotificationFactory : BrazeNotificationFactory() {
    override fun createNotification(payload: BrazeNotificationPayload): Notification? {
        // Your existing code
        return super.createNotification(payload)
    }

    // Your new method
    private fun getTeamInfo(team: String?): Pair<String, Int> {
        return when (team) {
            "WBF" -> Pair("Wild Bird Fund", R.drawable.team_wbf)
            "OWL" -> Pair("Owl Rehab", R.drawable.team_owl)
            else  -> Pair("Unknown", R.drawable.notification_small_icon)
        }
    }
}

Paso 3: Establecer la fábrica de notificaciones personalizada

En la clase de tu aplicación, usa customBrazeNotificationFactory para establecer tu fábrica de notificaciones personalizada.

1
2
3
4
5
6
7
8
class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        // Tell Braze to use your custom factory for notifications
        Braze.customBrazeNotificationFactory = MyCustomNotificationFactory()
    }
}

Paso 4: Enviar la actividad

Puedes usar el endpoint de REST API /messages/send para enviar una notificación push al dispositivo Android de un usuario.

Ejemplo de comando curl

Superb Owl envió su solicitud usando el siguiente comando curl:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
curl -X POST "https://BRAZE_REST_ENDPOINT/messages/send" \
  -H "Authorization: Bearer {REST_API_KEY}" \
  -H "Content-Type: application/json" \
  --data '{
    "external_user_ids": ["USER_ID"],
    "messages": {
      "android_push": {
        "title": "WBF vs OWL",
        "alert": "2 to 4 1:33 Q4",
        "extra": {
          "live_update": "true",
          "team1": "WBF",
          "team2": "OWL",
          "score1": "2",
          "score2": "4",
          "time": "1:33",
          "quarter": "Q4"
        },
        "notification_id": "ASSIGNED_NOTIFICATION_ID"
      }
    }
  }'

Parámetros de la solicitud

Clave Descripción
REST_API_KEY Una clave de API REST de Braze con permisos messages.send.

Puede crearse en el panel de Braze desde Configuración > Claves de API.
BRAZE_REST_ENDPOINT La URL de tu endpoint REST. Tu endpoint dependerá de la URL de Braze para tu instancia.
USER_ID El ID del usuario al que le estás enviando la notificación.
messages.android_push.title El título del mensaje. De forma predeterminada, no se usa para las notificaciones en vivo de la fábrica de notificaciones personalizada, pero puede usarse como alternativa.
messages.android_push.alert El cuerpo del mensaje. De forma predeterminada, no se usa para las notificaciones en vivo de la fábrica de notificaciones personalizada, pero puede usarse como alternativa.
messages.extra Pares clave-valor que la fábrica de notificaciones personalizada utiliza para las notificaciones en vivo. Puedes asignar cualquier cadena a este valor; sin embargo, en el ejemplo de comando curl, live_updates se usa para determinar si es una notificación push predeterminada o en vivo.
ASSIGNED_NOTIFICATION_ID El ID de notificación que deseas asignar a la notificación en vivo del usuario elegido. El ID debe ser único para este juego y debe usarse para actualizar su notificación existente posteriormente.

Paso 5: Actualizar la actividad

Para actualizar la Live Update existente con nuevos datos, modifica los pares clave-valor relevantes asignados a messages.extra, luego usa el mismo notification_id y llama al endpoint /messages/send de nuevo.

New Stuff!