Ir al contenido

Notificaciones push

Las notificaciones push te permiten enviar notificaciones desde tu aplicación cuando se producen eventos importantes. Puedes enviar una notificación push cuando tengas nuevos mensajes instantáneos que entregar, alertas de noticias de última hora que enviar o el último episodio del programa de TV favorito de tu usuario listo para que lo descargue para verlo sin conexión. También son más eficientes que la obtención en segundo plano, ya que la aplicación solo se inicia cuando es necesario.

Requisitos previos

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

Protocolos de push

Las notificaciones push web se implementan utilizando el estándar push del W3C, compatible con la mayoría de los navegadores principales. Para más información sobre los estándares específicos del protocolo push y la compatibilidad de los navegadores, puedes consultar los recursos de Apple, Mozilla y Microsoft.

Configurar las notificaciones push

Paso 1: Configura tu prestador de servicios

En el archivo service-worker.js de tu proyecto, añade el siguiente fragmento de código y establece la opción de inicialización manageServiceWorkerExternally en true al inicializar el SDK Web.

Paso 2: Registra el navegador

Para solicitar inmediatamente permisos push a un usuario para que su navegador pueda recibir notificaciones push, llama a braze.requestPushPermission(). Para comprobar primero si push es compatible con su navegador, llama a braze.isPushSupported().

También puedes enviar una solicitud push suave al usuario antes de solicitar el permiso push para mostrar tu propia interfaz de usuario relacionada con push.

Paso 3: Desactiva skipWaiting (opcional)

El archivo del prestador de servicios de Braze llamará automáticamente a skipWaiting durante la instalación. Si deseas desactivar esta funcionalidad, añade el siguiente código a tu archivo del prestador de servicios, después de importar Braze:

Cancelar la suscripción de un usuario

Para cancelar la suscripción de un usuario, llama a braze.unregisterPush().

Dominios alternativos

Para integrar notificaciones push web, tu dominio debe ser seguro, lo que generalmente significa https, localhost y otras excepciones definidas en el estándar W3C de push. También necesitarás poder registrar un prestador de servicios en la raíz de tu dominio, o al menos poder controlar las cabeceras HTTP de ese archivo. Este artículo explica cómo integrar las notificaciones push web de Braze en un dominio alternativo.

Ejemplos

Si no puedes cumplir todos los criterios descritos en el estándar W3C de push, puedes usar este método para añadir un diálogo de solicitud push a tu sitio web. Esto puede ser útil si deseas permitir que tus usuarios realicen la adhesión voluntaria desde un sitio web http o una ventana emergente de extensión de navegador que impide que se muestre tu solicitud push.

Consideraciones

Ten en cuenta que, como muchas soluciones alternativas en la web, los navegadores evolucionan continuamente y este método puede no ser viable en el futuro. Antes de continuar, asegúrate de que:

  • Posees un dominio seguro independiente (https://) y tienes permisos para registrar un prestador de servicios en ese dominio.
  • Los usuarios han iniciado sesión en tu sitio web, lo que garantiza que los tokens de notificaciones push coincidan con el perfil correcto.

Configurar un dominio push alternativo

Para que el siguiente ejemplo sea claro, usaremos http://insecure.com y https://secure.com como nuestros dos dominios con el objetivo de que los visitantes se registren para push en http://insecure.com. Este ejemplo también podría aplicarse a un esquema chrome-extension:// para la página emergente de una extensión de navegador.

Paso 1: Iniciar el flujo de solicitud

En insecure.com, abre una nueva ventana hacia tu dominio seguro usando un parámetro de URL para pasar el ID externo de Braze del usuario actualmente conectado.

http://insecure.com

<button id="opt-in">Opt-In For Push</button>
<script>
// the same ID you would use with `braze.changeUser`:
const user_id = getUserIdSomehow();
// pass the user ID into the secure domain URL:
const secure_url = `https://secure.com/push-registration.html?external_id=${user_id}`;

// when the user takes some action, open the secure URL in a new window
document.getElementById("opt-in").onclick = function(){
    if (!window.open(secure_url, 'Opt-In to Push', 'height=500,width=600,left=150,top=150')) {
        window.alert('The popup was blocked by your browser');
    } else {
        // user is shown a popup window
        // and you can now prompt for push in this window
    }
}
</script>

Paso 2: Registrarse para push

En este punto, secure.com abrirá una ventana emergente en la que puedes inicializar el SDK web de Braze para el mismo ID de usuario y solicitar el permiso del usuario para push web.

https://secure.com/push-registration.html

Paso 3: Comunicación entre dominios (opcional)

Ahora que los usuarios pueden realizar la adhesión voluntaria desde este flujo de trabajo que se origina en insecure.com, puede que desees modificar tu sitio en función de si el usuario ya ha dado su consentimiento o no. No tiene sentido pedirle al usuario que se registre para push si ya lo ha hecho.

Puedes usar iFrames y la API postMessage para comunicarte entre tus dos dominios.

insecure.com

En nuestro dominio insecure.com, le pediremos al dominio seguro (donde push está realmente registrado) información sobre el registro push del usuario actual:

<!-- Create an iframe to the secure domain and run getPushStatus onload-->
<iframe id="push-status" src="https://secure.com/push-status.html" onload="getPushStatus()" style="display:none;"></iframe>

<script>
function getPushStatus(event){
    // send a message to the iframe asking for push status
    event.target.contentWindow.postMessage({type: 'get_push_status'}, 'https://secure.com');
    // listen for a response from the iframe's domain
    window.addEventListener("message", (event) => {
        if (event.origin === "http://insecure.com" && event.data.type === 'set_push_status') {
            // update the page based on the push permission we're told
            window.alert(`Is user registered for push? ${event.data.isPushPermissionGranted}`);
        }
    }
}
</script>

secure.com/push-status.html

Preguntas frecuentes (FAQ)

Prestadores de servicios

¿Qué pasa si no puedo registrar un prestador de servicios en el directorio raíz?

De forma predeterminada, un prestador de servicios solo puede utilizarse dentro del mismo directorio en el que está registrado. Por ejemplo, si tu archivo de prestador de servicios existe en /assets/service-worker.js, solo sería posible registrarlo dentro de example.com/assets/* o un subdirectorio de la carpeta assets, pero no en tu página de inicio (example.com/). Por esta razón, se recomienda alojar y registrar el prestador de servicios en el directorio raíz (como https://example.com/service-worker.js).

Si no puedes registrar un prestador de servicios en tu dominio raíz, un enfoque alternativo es utilizar el encabezado HTTP Service-Worker-Allowed al servir tu archivo de prestador de servicios. Al configurar tu servidor para que devuelva Service-Worker-Allowed: / en la respuesta del prestador de servicios, esto indicará al navegador que amplíe el alcance y permita su uso desde un directorio diferente.

¿Puedo crear un prestador de servicios utilizando un Tag Manager?

No, los prestadores de servicios deben alojarse en el servidor de tu sitio web y no pueden cargarse a través de Tag Manager.

Seguridad del sitio

¿Se requiere HTTPS?

Sí. Los estándares web requieren que el dominio que solicita permiso para notificaciones push sea seguro.

¿Cuándo se considera un sitio “seguro”?

Un sitio se considera seguro si coincide con uno de los siguientes patrones de origen seguro. Las notificaciones push web de Braze se basan en este estándar abierto, por lo que se previenen los ataques de intermediario (man-in-the-middle).

  • (https, , *)
  • (wss, *, *)
  • (, localhost, )
  • (, .localhost, *)
  • (, 127/8, )
  • (, ::1/128, *)
  • (file, *, —)
  • (chrome-extension, *, —)

¿Qué pasa si no se dispone de un sitio seguro?

Aunque la mejor práctica del sector es hacer que todo tu sitio sea seguro, los clientes que no puedan asegurar el dominio de su sitio pueden solucionar el requisito utilizando un modal seguro. Consulta más información en nuestra guía sobre el uso de dominio push alternativo o mira una demostración funcional.

Requisitos previos

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

Características integradas

Las siguientes características están integradas en el SDK de Braze para Android. Para utilizar cualquier otra característica de notificaciones push, necesitarás configurar las notificaciones push en tu aplicación.

Característica Descripción
Push Stories Las Push Stories de Android están integradas en el SDK de Braze para Android de forma predeterminada. Para saber más, consulta Push Stories.
Push Primers Las campañas de push primer animan a tus usuarios a habilitar las notificaciones push en su dispositivo para tu aplicación. Esto se puede hacer sin personalización del SDK utilizando nuestro push primer sin código.

Acerca del ciclo de vida de las notificaciones push

El siguiente diagrama de flujo muestra cómo Braze gestiona el ciclo de vida de las notificaciones push, como las solicitudes de permiso, la generación de tokens y la entrega de mensajes.

---
config:
  theme: neutral
---
flowchart TD

%% Permission flow
subgraph Permission[Push Permissions]
    B{Android version of the device?}
    B -->|Android 13+| C["requestPushPermissionPrompt() called"]
    B -->|Android 12 and earlier| D[No permissions required]

    %% Connect Android 12 path to Braze state
    D --> H3[Braze: user subscription state]
    H3 --> J3[Defaults to 'subscribed' when user profile created]

    C --> E{Did the user grant push permission?}
    E -->|Yes| F[POST_NOTIFICATIONS permission granted]
    E -->|No| G[POST_NOTIFICATIONS permission denied]

    %% Braze subscription state updates
    F --> H1[Braze: user subscription state]
    G --> H2[Braze: user subscription state]

    H1 --> I1{Automatically opt in after permission granted?}
    I1 -->|true| J1[Set to 'opted-in']
    I1 -->|false| J2[Remains 'subscribed']

    H2 --> K1[Remains 'subscribed'<br/>or 'unsubscribed']

    %% Subscription state legend
    subgraph BrazeStates[Braze subscription states]
        L1['Subscribed' - default state<br/>when user profile created]
        L2['Opted-in' - user explicitly<br/>wants push notifications]
        L3['Unsubscribed' - user explicitly<br/>opted out of push]
    end

    %% Note about user-level states
    note1[Note: These states are user-level<br/>and apply across all devices for the user]

    %% Connect states to legend
    J1 -.-> L2
    J2 -.-> L1
    J3 -.-> L1
    K1 -.-> L3
    note1 -.-> BrazeStates
end

%% Styling
classDef permissionClass fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
classDef tokenClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
classDef sdkClass fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef configClass fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef displayClass fill:#ffebee,stroke:#c62828,stroke-width:2px
classDef deliveryClass fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef brazeClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px

class A,B,C,E,F,G permissionClass
class H,I tokenClass
class J,K sdkClass
class N,O,P configClass
class R,S,S1,T,U,V displayClass
class W,X,X1,X2,Y,Z deliveryClass
class H1,H2,H3,I1,J1,J2,J3,K1,L1,L2,L3,note1 brazeClass
---
config:
  theme: neutral
---
flowchart TD

%% Token generation flow
subgraph Token[Token Generation]
    H["Braze SDK initialized"] --> Q{Is FCM auto-registration enabled?}
    Q -->|Yes| L{Is required configuration present?}
    Q -->|No| M[No FCM token generated]
    L -->|Yes| I[Generate FCM token]
    L -->|No| M
    I --> K[Register token with Braze]

    %% Configuration requirements
    subgraph Config[Required configuration]
        N['google-services.json' file is present]
        O['com.google.firebase:firebase-messaging' in gradle]
        P['com.google.gms.google-services' plugin in gradle]
    end

    %% Connect config to check
    N -.-> L
    O -.-> L
    P -.-> L
end

%% Styling
classDef permissionClass fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
classDef tokenClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
classDef sdkClass fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef configClass fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef displayClass fill:#ffebee,stroke:#c62828,stroke-width:2px
classDef deliveryClass fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef brazeClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px

class A,B,C,E,F,G permissionClass
class H,I tokenClass
class J,K sdkClass
class N,O,P configClass
class R,S,S1,T,U,V displayClass
class W,X,X1,X2,Y,Z deliveryClass
class H1,H2,H3,I1,J1,J2,J3,K1,L1,L2,L3,note1 brazeClass
---
config:
  theme: neutral
  fontSize: 10
---
flowchart TD

subgraph Display[Push Display]
    %% Push delivery flow
    W[Push sent to FCM servers] --> X{Did FCM receive push?}
    X -->|App is terminated| Y[FCM cannot deliver push to the app]
    X -->|Delivery conditions met| X1[App receives push from FCM]
    X1 --> X2[Braze SDK receives push]
    X2 --> R[Push type?]

    %% Push Display Flow
    R -->|Standard push| S{Is push permission required?}
    R -->|Silent push| T[Braze SDK processes silent push]
    S -->|Yes| S1{Did the user grant push permission?}
    S -->|No| V[Notification is shown to the user]
    S1 -->|Yes| V
    S1 -->|No| U[Notification is not shown to the user]
end

%% Styling
classDef permissionClass fill:#e3f2fd,stroke:#1565c0,stroke-width:2px
classDef tokenClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
classDef sdkClass fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef configClass fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef displayClass fill:#ffebee,stroke:#c62828,stroke-width:2px
classDef deliveryClass fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef brazeClass fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px

class A,B,C,E,F,G permissionClass
class H,I tokenClass
class J,K sdkClass
class N,O,P configClass
class R,S,S1,T,U,V displayClass
class W,X,X1,X2,Y,Z deliveryClass
class H1,H2,H3,I1,J1,J2,J3,K1,L1,L2,L3,note1 brazeClass

Configurar las notificaciones push

Límites de velocidad

La API de Firebase Cloud Messaging (FCM) tiene un límite de velocidad predeterminado de 600 000 solicitudes por minuto. Si alcanzas este límite, Braze lo intentará de nuevo automáticamente en unos minutos. Para solicitar un aumento, ponte en contacto con el soporte de Firebase.

Paso 1: Añadir Firebase a tu proyecto

Primero, añade Firebase a tu proyecto Android. Para obtener instrucciones paso a paso, consulta la guía de configuración de Firebase de Google.

Paso 2: Añadir Cloud Messaging a tus dependencias

A continuación, añade la biblioteca Cloud Messaging a las dependencias de tu proyecto. En tu proyecto Android, abre build.gradle y luego añade la siguiente línea a tu bloque dependencies.

implementation "google.firebase:firebase-messaging:+"

Tus dependencias deberían tener un aspecto similar al siguiente:

dependencies {
  implementation project(':android-sdk-ui')
  implementation "com.google.firebase:firebase-messaging:+"
}

Paso 3: Habilitar la API de Firebase Cloud Messaging

En Google Cloud, selecciona el proyecto que usa tu aplicación Android y luego habilita la API de Firebase Cloud Messaging.

API de Firebase Cloud Messaging habilitada

Paso 4: Crear una cuenta de servicio

A continuación, crea una nueva cuenta de servicio para que Braze pueda realizar llamadas autorizadas a la API al registrar tokens de FCM. En Google Cloud, ve a Service Accounts y luego selecciona tu proyecto. En la página Service Accounts, selecciona Create Service Account.

Página principal de la cuenta de servicio de un proyecto con "Create Service Account" resaltado.

Introduce un nombre, un ID y una descripción para la cuenta de servicio, y luego selecciona Create and continue.

En el campo Role, busca y selecciona Firebase Cloud Messaging API Admin en la lista de roles. Para un acceso más restrictivo, crea un rol personalizado con el permiso cloudmessaging.messages.create y selecciónalo de la lista en su lugar. Cuando hayas terminado, selecciona Done.

El formulario "Grant this service account access to project" con "Firebase Cloud Messaging API Admin" seleccionado como rol.

Paso 5: Generar credenciales JSON

A continuación, genera credenciales JSON para tu cuenta de servicio de FCM. En Google Cloud IAM & Admin, ve a Service Accounts y luego selecciona tu proyecto. Localiza la cuenta de servicio de FCM que creaste anteriormente y selecciona  Actions > Manage Keys.

Página principal de la cuenta de servicio del proyecto con el menú "Actions" abierto.

Selecciona Add Key > Create new key.

La cuenta de servicio seleccionada con el menú "Add Key" abierto.

Elige JSON y luego selecciona Create. Si creaste tu cuenta de servicio usando un ID de proyecto de Google Cloud diferente al ID de tu proyecto de FCM, tendrás que actualizar manualmente el valor asignado a project_id en tu archivo JSON.

Asegúrate de recordar dónde descargaste la clave—la necesitarás en el siguiente paso.

El formulario para crear una clave privada con "JSON" seleccionado.

Paso 6: Subir tus credenciales JSON a Braze

A continuación, sube tus credenciales JSON a tu panel de Braze. En Braze, selecciona  Configuración > Configuración de la aplicación.

El menú "Configuración" abierto en Braze con "Configuración de la aplicación" resaltado.

En la sección Push Notification Settings de tu aplicación Android, elige Firebase, luego selecciona Upload JSON File y sube las credenciales que generaste anteriormente. Cuando hayas terminado, selecciona Save.

El formulario "Push Notification Settings" con "Firebase" seleccionado como proveedor de push.

Paso 7: Configurar el registro automático de tokens

Cuando uno de tus usuarios acepta las notificaciones push, tu aplicación necesita generar un token de FCM en su dispositivo antes de que puedas enviarle notificaciones push. Con el SDK de Braze, puedes habilitar el registro automático de tokens de FCM para el dispositivo de cada usuario en los archivos de configuración de Braze de tu proyecto.

Primero, ve a Firebase Console, abre tu proyecto y selecciona  Settings > Project settings.

El proyecto de Firebase con el menú "Settings" abierto.

Selecciona Cloud Messaging y luego, en Firebase Cloud Messaging API (V1), copia el número del campo Sender ID.

La página "Cloud Messaging" del proyecto de Firebase con el "Sender ID" resaltado.

A continuación, abre tu proyecto de Android Studio y usa tu Firebase Sender ID para habilitar el registro automático de tokens de FCM dentro de tu braze.xml o BrazeConfig.

Para configurar el registro automático de tokens de FCM, añade las siguientes líneas a tu archivo braze.xml:

<bool translatable="false" name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
<string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">FIREBASE_SENDER_ID</string>

Sustituye FIREBASE_SENDER_ID por el valor que copiaste de la configuración de tu proyecto de Firebase. Tu braze.xml debería tener un aspecto similar al siguiente:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string translatable="false" name="com_braze_api_key">12345ABC-6789-DEFG-0123-HIJK456789LM</string>
  <bool translatable="false" name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
<string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">603679405392</string>
</resources>

Para configurar el registro automático de tokens de FCM, añade las siguientes líneas a tu BrazeConfig:

.setIsFirebaseCloudMessagingRegistrationEnabled(true)
.setFirebaseCloudMessagingSenderIdKey("FIREBASE_SENDER_ID")
.setIsFirebaseCloudMessagingRegistrationEnabled(true)
.setFirebaseCloudMessagingSenderIdKey("FIREBASE_SENDER_ID")

Sustituye FIREBASE_SENDER_ID por el valor que copiaste de la configuración de tu proyecto de Firebase. Tu BrazeConfig debería tener un aspecto similar al siguiente:

BrazeConfig brazeConfig = new BrazeConfig.Builder()
  .setApiKey("12345ABC-6789-DEFG-0123-HIJK456789LM")
  .setCustomEndpoint("sdk.iad-01.braze.com")
  .setSessionTimeout(60)
  .setHandlePushDeepLinksAutomatically(true)
  .setGreatNetworkDataFlushInterval(10)
  .setIsFirebaseCloudMessagingRegistrationEnabled(true)
  .setFirebaseCloudMessagingSenderIdKey("603679405392")
  .build();
Braze.configure(this, brazeConfig);
val brazeConfig = BrazeConfig.Builder()
  .setApiKey("12345ABC-6789-DEFG-0123-HIJK456789LM")
  .setCustomEndpoint("sdk.iad-01.braze.com")
  .setSessionTimeout(60)
  .setHandlePushDeepLinksAutomatically(true)
  .setGreatNetworkDataFlushInterval(10)
  .setIsFirebaseCloudMessagingRegistrationEnabled(true)
  .setFirebaseCloudMessagingSenderIdKey("603679405392")
  .build()
Braze.configure(this, brazeConfig)

Usar múltiples proyectos de Firebase

Si tu aplicación usa múltiples proyectos de Firebase, sigue estos pasos:

  1. Mantén el push de Braze en el proyecto de Firebase predeterminado inicializado desde el archivo google-services.json de tu aplicación.
  2. Si usas un servicio de mensajería de Firebase personalizado, completa Registrar ID de instalación en servicios de mensajería de Firebase personalizados.
  3. Si tu aplicación obtiene un token de push de otra forma, establece manualmente registeredPushToken como se muestra en el consejo anterior.

Para obtener detalles sobre versiones, consulta el Registro de cambios del SDK.

Paso 8: Eliminar las solicitudes automáticas en tu clase de aplicación

Para evitar que Braze desencadene solicitudes de red innecesarias cada vez que envíes notificaciones push silenciosas, elimina cualquier solicitud de red automática configurada en el método onCreate() de tu clase Application. Para más información, consulta Referencia para desarrolladores Android: Application.

Mostrar notificaciones

Paso 1: Registrar el servicio de mensajería Firebase de Braze

Puedes crear un servicio de mensajería Firebase nuevo, existente o que no sea de Braze. Elige el que mejor se adapte a tus necesidades específicas.

Braze incluye un servicio para gestionar la recepción de push y las intenciones de apertura. Nuestra clase BrazeFirebaseMessagingService deberá registrarse en tu AndroidManifest.xml:

<service android:name="com.braze.push.BrazeFirebaseMessagingService"
  android:exported="false">
  <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT" />
  </intent-filter>
</service>

Nuestro código de notificación también utiliza BrazeFirebaseMessagingService para gestionar el seguimiento de apertura y acción de clic. Este servicio debe registrarse en el AndroidManifest.xml para funcionar correctamente. Además, recuerda que Braze añade un prefijo con una clave única a las notificaciones de nuestro sistema, de modo que solo se renderizan las notificaciones enviadas desde nuestros sistemas. Puedes registrar servicios adicionales por separado para renderizar notificaciones enviadas desde otros servicios de FCM. Consulta AndroidManifest.xml en la aplicación de ejemplo de push con Firebase.

Si ya tienes un servicio de mensajería Firebase registrado, puedes pasar objetos RemoteMessage a Braze a través de BrazeFirebaseMessagingService.handleBrazeRemoteMessage(). Este método solo mostrará una notificación si el objeto RemoteMessage se originó en Braze y lo ignorará de forma segura en caso contrario.

Registrar los ID de instalación en servicios de mensajería Firebase personalizados

Si utilizas firebase-messaging v25.1.0 o posterior, el registro de Firebase utiliza el ID de instalación de Firebase. En tu servicio de mensajería Firebase personalizado, sobrescribe onRegistered y configura registeredPushToken.

public class MyFirebaseMessagingService extends FirebaseMessagingService {
  @Override
  public void onRegistered(String installationId) {
    super.onRegistered(installationId);
    Braze.getInstance(this).setRegisteredPushToken(installationId);
  }

  @Override
  public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    if (BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)) {
      // This Remote Message originated from Braze and a push notification was displayed.
      // No further action is needed.
    } else {
      // This Remote Message did not originate from Braze.
      // No action was taken and you can safely pass this Remote Message to other handlers.
    }
  }
}
class MyFirebaseMessagingService : FirebaseMessagingService() {
  override fun onRegistered(installationId: String) {
    super.onRegistered(installationId)
    Braze.getInstance(this).registeredPushToken = installationId
  }

  override fun onMessageReceived(remoteMessage: RemoteMessage?) {
    super.onMessageReceived(remoteMessage)
    if (BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)) {
      // This Remote Message originated from Braze and a push notification was displayed.
      // No further action is needed.
    } else {
      // This Remote Message did not originate from Braze.
      // No action was taken and you can safely pass this Remote Message to other handlers.
    }
  }
}

Si tienes otro servicio de mensajería Firebase que también quieras utilizar, puedes especificar un servicio de mensajería Firebase alternativo al que llamar si tu aplicación recibe un push que no sea de Braze.

En tu braze.xml, especifica:

<bool name="com_braze_fallback_firebase_cloud_messaging_service_enabled">true</bool>
<string name="com_braze_fallback_firebase_cloud_messaging_service_classpath">com.company.OurFirebaseMessagingService</string>

o configúralo mediante configuración en tiempo de ejecución:

BrazeConfig brazeConfig = new BrazeConfig.Builder()
        .setFallbackFirebaseMessagingServiceEnabled(true)
        .setFallbackFirebaseMessagingServiceClasspath("com.company.OurFirebaseMessagingService")
        .build();
Braze.configure(this, brazeConfig);
val brazeConfig = BrazeConfig.Builder()
        .setFallbackFirebaseMessagingServiceEnabled(true)
        .setFallbackFirebaseMessagingServiceClasspath("com.company.OurFirebaseMessagingService")
        .build()
Braze.configure(this, brazeConfig)

Paso 2: Adaptar los iconos pequeños a las directrices de diseño

Para información general sobre los iconos de notificación de Android, consulta la Descripción general de las notificaciones.

A partir de Android N, debes actualizar o eliminar los activos de iconos pequeños de notificación que incluyan color. El sistema Android (no el SDK de Braze) ignora todos los canales no alfa y de transparencia en los iconos de acción y el icono pequeño de notificación. En otras palabras, Android convertirá todas las partes de tu icono pequeño de notificación a monocromo, excepto las regiones transparentes.

Para crear un activo de icono pequeño de notificación que se muestre correctamente:

  • Elimina todos los colores de la imagen excepto el blanco.
  • Todas las demás regiones no blancas del activo deben ser transparentes.

Los siguientes iconos grande y pequeño son ejemplos de iconos diseñados correctamente:

Un icono pequeño que aparece en la esquina inferior de un icono grande junto a un mensaje que dice "Hey I'm on my way to the bar but.."

Paso 3: Configurar los iconos de notificación

Especificar iconos en braze.xml

Braze te permite configurar tus iconos de notificación especificando recursos drawable en tu braze.xml:

<drawable name="com_braze_push_small_notification_icon">REPLACE_WITH_YOUR_ICON</drawable>
<drawable name="com_braze_push_large_notification_icon">REPLACE_WITH_YOUR_ICON</drawable>

Es obligatorio establecer un icono pequeño de notificación. Si no lo configuras, Braze utilizará por defecto el icono de la aplicación como icono pequeño de notificación, lo que puede no verse de forma óptima.

Establecer un icono grande de notificación es opcional pero recomendable.

Especificar el color de acento del icono

El color de acento del icono de notificación puede sobrescribirse en tu braze.xml. Si no se especifica el color, el predeterminado es el mismo gris que Lollipop utiliza para las notificaciones del sistema.

<integer name="com_braze_default_notification_accent_color">0xFFf33e3e</integer>

También puedes utilizar opcionalmente una referencia de color:

<color name="com_braze_default_notification_accent_color">@color/my_color_here</color>

Para que Braze abra automáticamente tu aplicación y cualquier vínculo profundo cuando se pulse una notificación push, configura com_braze_handle_push_deep_links_automatically como true en tu braze.xml:

<bool name="com_braze_handle_push_deep_links_automatically">true</bool>

Este indicador también se puede configurar mediante configuración en tiempo de ejecución:

BrazeConfig brazeConfig = new BrazeConfig.Builder()
        .setHandlePushDeepLinksAutomatically(true)
        .build();
Braze.configure(this, brazeConfig);
val brazeConfig = BrazeConfig.Builder()
        .setHandlePushDeepLinksAutomatically(true)
        .build()
Braze.configure(this, brazeConfig)

Si deseas gestionar los vínculos profundos de forma personalizada, deberás crear una devolución de llamada push que escuche las intenciones de push recibido y abierto desde Braze. Para obtener más información, consulta Usar una devolución de llamada para eventos push.

Gestionar notificaciones en primer plano

De forma predeterminada, cuando una notificación push llega mientras tu aplicación está en primer plano en Android, el sistema la muestra automáticamente. Para que Braze procese la carga útil de la notificación push (para el seguimiento de análisis, la gestión de vínculos profundos y el procesamiento personalizado), enruta los datos push entrantes a Braze dentro de tu método FirebaseMessagingService.onMessageReceived.

Cómo funciona

Cuando llamas a BrazeFirebaseMessagingService.handleBrazeRemoteMessage, Braze determina si la carga útil es una notificación push de Braze y, de ser así, crea y muestra la notificación con el método NotificationManagerCompat. A diferencia de iOS, Android muestra las notificaciones independientemente de si la aplicación está en primer plano o en segundo plano.

package com.example.push;

import com.braze.push.BrazeFirebaseMessagingService;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class MyFirebaseMessagingService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);

        // Let Braze process the payload and display the notification
        if (BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)) {
            // Braze successfully handled the push notification
        } else {
            // Handle non-Braze messages
        }
    }
}
package com.example.push

import com.braze.push.BrazeFirebaseMessagingService
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage

class MyFirebaseMessagingService : FirebaseMessagingService() {
    override fun onMessageReceived(remoteMessage: RemoteMessage) {
        super.onMessageReceived(remoteMessage)

        // Let Braze process the payload and display the notification
        if (BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)) {
            // Braze successfully handled the push notification
        } else {
            // Handle non-Braze messages
        }
    }
}

Para más información, consulta el ejemplo de integración de Firebase en el repositorio del SDK de Braze para Android.

Personalizar el comportamiento en primer plano

Si deseas un comportamiento personalizado en primer plano, como suprimir la notificación del sistema o mostrar una interfaz de usuario dentro de la aplicación, puedes:

  • Usar subscribeToPushNotificationEvents para reaccionar a eventos push y gestionar vínculos profundos con el método BrazeNotificationUtils.routeUserWithNotificationOpenedIntent. Para más información, consulta el ejemplo de push con Firebase.
  • Crear y publicar tu propia notificación usando un IBrazeNotificationFactory personalizado, o suprimir la notificación al no llamar a notificationManager.notify en tu flujo de gestión.

Para más información sobre la personalización de notificaciones, consulta Fábrica de notificaciones personalizada.

Sigue las instrucciones que se encuentran en la documentación para desarrolladores de Android sobre vinculación en profundidad si aún no has añadido vínculos profundos a tu aplicación. Para aprender más sobre qué son los vínculos profundos, consulta nuestro artículo de preguntas frecuentes.

El panel de Braze permite configurar vínculos profundos o URLs web en Campaigns de notificaciones push y Canvas que se abrirán cuando se haga clic en la notificación.

La configuración de comportamiento de clic en el panel de Braze con la opción de vínculo profundo a la aplicación seleccionada en el menú desplegable.

Personalizar el comportamiento de la pila de retroceso

El SDK de Android, de forma predeterminada, colocará la actividad principal del lanzador de tu aplicación anfitriona en la pila de retroceso al seguir vínculos profundos push. Braze te permite configurar una actividad personalizada para abrir en la pila de retroceso en lugar de tu actividad principal del lanzador, o deshabilitar la pila de retroceso por completo.

Por ejemplo, para configurar una actividad llamada YourMainActivity como la actividad de la pila de retroceso usando la configuración en tiempo de ejecución:

BrazeConfig brazeConfig = new BrazeConfig.Builder()
        .setPushDeepLinkBackStackActivityEnabled(true)
        .setPushDeepLinkBackStackActivityClass(YourMainActivity.class)
        .build();
Braze.configure(this, brazeConfig);
val brazeConfig = BrazeConfig.Builder()
        .setPushDeepLinkBackStackActivityEnabled(true)
        .setPushDeepLinkBackStackActivityClass(YourMainActivity.class)
        .build()
Braze.configure(this, brazeConfig)

Consulta la configuración equivalente para tu braze.xml. Ten en cuenta que el nombre de la clase debe ser el mismo que devuelve Class.forName().

<bool name="com_braze_push_deep_link_back_stack_activity_enabled">true</bool>
<string name="com_braze_push_deep_link_back_stack_activity_class_name">your.package.name.YourMainActivity</string>

Paso 5: Definir canales de notificación

El SDK de Braze para Android es compatible con los canales de notificación de Android. Si una notificación de Braze no contiene el ID de un canal de notificación o si la notificación de Braze contiene un ID de canal no válido, Braze mostrará la notificación con el canal de notificación predeterminado definido en el SDK. Los usuarios de la empresa utilizan los canales de notificación de Android dentro de la plataforma para agrupar notificaciones.

Para configurar el nombre visible para el usuario del canal de notificación predeterminado de Braze, usa BrazeConfig.setDefaultNotificationChannelName().

Para configurar la descripción visible para el usuario del canal de notificación predeterminado de Braze, usa BrazeConfig.setDefaultNotificationChannelDescription().

Actualiza cualquier Campaign de API con el parámetro del objeto push de Android para incluir el campo notification_channel. Si este campo no se especifica, Braze enviará la carga útil de la notificación con el ID del canal alternativo del panel.

Aparte del canal de notificación predeterminado, Braze no creará ningún canal. Todos los demás canales deben ser definidos programáticamente por la aplicación anfitriona y luego ingresados en el panel de Braze.

El nombre y la descripción del canal predeterminado también pueden configurarse en braze.xml.

<string name="com_braze_default_notification_channel_name">Your channel name</string>
<string name="com_braze_default_notification_channel_description">Your channel description</string>

Paso 6: Probar la visualización y los análisis de las notificaciones

Probar la visualización

En este punto, deberías poder ver las notificaciones enviadas desde Braze. Para probarlo, ve a la página Campaigns en tu panel de Braze y crea una Campaign de notificaciones push. Elige Android Push y diseña tu mensaje. Luego haz clic en el ícono del ojo en el creador para acceder al remitente de prueba. Introduce el ID de usuario o la dirección de correo electrónico de tu usuario actual y haz clic en Send Test. Deberías ver la notificación push aparecer en tu dispositivo.

La pestaña de prueba de una Campaign de notificaciones push en el panel de Braze.

Para problemas relacionados con la visualización de push, consulta nuestra guía de solución de problemas.

Probar los análisis

En este punto, también deberías tener el registro de análisis para las aperturas de notificaciones push. Hacer clic en la notificación cuando llegue debería hacer que los Direct Opens en la página de resultados de tu Campaign aumenten en 1. Consulta nuestro artículo sobre informes push para un desglose de los análisis push.

Para problemas relacionados con los análisis push, consulta nuestra guía de solución de problemas.

Probar desde la línea de comandos

Si deseas probar In-App Messages y notificaciones push a través de la interfaz de línea de comandos, puedes enviar una sola notificación a través del terminal mediante cURL y la API de mensajería. Necesitarás reemplazar los siguientes campos con los valores correctos para tu caso de prueba:

  • YOUR_API_KEY (Ve a Configuración > Claves de API.)
  • YOUR_EXTERNAL_USER_ID (Busca un perfil en la página Buscar usuarios.)
  • YOUR_KEY1 (opcional)
  • YOUR_VALUE1 (opcional)
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {YOUR_API_KEY}" -d '{
  "external_user_ids":["YOUR_EXTERNAL_USER_ID"],
  "messages": {
    "android_push": {
      "title":"Test push title",
      "alert":"Test push",
      "extra": {
        "YOUR_KEY1":"YOUR_VALUE1"
      }
    }
  }
}' https://rest.iad-01.braze.com/messages/send

Este ejemplo usa la instancia US-01. Si no estás en esta instancia, reemplaza el endpoint US-01 con tu endpoint.

Notificaciones push de conversación

Panel de notificaciones de Android mostrando una sección de Conversaciones con tres notificaciones de conversación agrupadas de diferentes contactos.

La iniciativa de personas y conversaciones es una iniciativa plurianual de Android que tiene como objetivo destacar a las personas y las conversaciones en las superficies del sistema del teléfono. Esta prioridad se basa en el hecho de que la comunicación y la interacción con otras personas sigue siendo el área funcional más valorada e importante para la mayoría de los usuarios de Android en todos los grupos demográficos.

Requisitos de uso

  • Este tipo de notificación requiere el SDK de Braze para Android v15.0.0+ y dispositivos con Android 11+.
  • Los dispositivos o SDK no compatibles recurrirán a una notificación push estándar.

Esta característica solo está disponible a través de la REST API de Braze. Consulta el objeto push de Android para obtener más información.

Errores de cuota excedida de FCM

Cuando se excede tu límite de Firebase Cloud Messaging (FCM), Google devuelve errores de “cuota excedida”. El límite predeterminado para FCM es de 600 000 solicitudes por minuto. Braze reintenta el envío de acuerdo con las prácticas recomendadas de Google. Sin embargo, un gran volumen de estos errores puede prolongar el tiempo de envío varios minutos. Para mitigar el impacto potencial, Braze te enviará una alerta indicando que se está excediendo el límite de velocidad y los pasos que puedes seguir para prevenir los errores.

Para verificar tu límite actual, ve a Google Cloud Console > APIs & Services > Firebase Cloud Messaging API > Quotas & System Limits, o visita la página de cuotas de la API de FCM.

Prácticas recomendadas

Recomendamos estas prácticas para mantener bajo el volumen de estos errores.

Solicitar un aumento del límite de velocidad a FCM

Para solicitar un aumento del límite de velocidad a FCM, puedes contactar directamente con el soporte de Firebase o hacer lo siguiente:

  1. Ve a la página de cuotas de la API de FCM.
  2. Localiza la cuota Send requests per minute.
  3. Selecciona Edit Quota.
  4. Introduce un nuevo valor y envía tu solicitud.

Aplicar un límite de velocidad del espacio de trabajo

Puedes aplicar un límite de velocidad del espacio de trabajo para las notificaciones push de Android. Esto puede ayudar a regular la tasa de entrega de tus mensajes salientes. Para más detalles, consulta Límites de velocidad de mensajería del espacio de trabajo.

Límites de velocidad

Las notificaciones push tienen una tasa limitada, así que no temas enviar tantas como necesite tu aplicación. iOS y los servidores del servicio de notificaciones push de Apple (APN) controlarán la frecuencia con la que se entregan, y no te meterás en problemas por enviar demasiadas. Si tus notificaciones push están limitadas, podrían retrasarse hasta la próxima vez que el dispositivo envíe un paquete de mantenimiento de conexión o reciba otra notificación.

Configurar las notificaciones push

Paso 1: Sube tu token de APNs

Antes de que puedas enviar una notificación push de iOS utilizando Braze, tienes que cargar tu archivo de notificación push .p8, como se describe en la documentación para desarrolladores de Apple:

  1. En tu cuenta de desarrollador de Apple, ve a Certificates, Identifiers & Profiles.
  2. En Keys, selecciona All y haz clic en el botón de añadir (+) en la parte superior de la página.
  3. En Key Description, introduce un nombre único para la clave de firma.
  4. En Key Services, selecciona la casilla Apple Push Notification service (APNs) y, a continuación, haz clic en Continue. Haz clic en Confirm.
  5. Anota el ID de la clave. Haz clic en Download para generar y descargar la clave. Asegúrate de guardar el archivo descargado en un lugar seguro, ya que no puedes descargarlo más de una vez.
  6. En Braze, ve a Configuración > Configuración de la aplicación y carga el archivo .p8 en Apple Push Certificate. Puedes cargar tu certificado push de desarrollo o de producción. Para probar las notificaciones push después de que tu aplicación esté en vivo en la App Store, se recomienda configurar un espacio de trabajo separado para la versión de desarrollo de tu aplicación.
  7. Cuando se te solicite, introduce el ID del paquete, el ID de la clave y el ID del equipo de tu aplicación. También tendrás que especificar si quieres enviar notificaciones al entorno de desarrollo o de producción de tu aplicación, que se define por su perfil de aprovisionamiento.
  8. Cuando hayas terminado, selecciona Guardar.

Paso 2: Habilita las capacidades push

En Xcode, ve a la sección Signing & Capabilities del objetivo principal de la aplicación y añade la capacidad de notificaciones push.

La sección 'Signing & Capabilities' en un proyecto de Xcode.

Paso 3: Configura la gestión de push

Puedes utilizar el SDK de Swift para automatizar el procesamiento de las notificaciones remotas recibidas de Braze. Esta es la forma más sencilla de gestionar las notificaciones push y es el método de gestión recomendado.

Paso 3.1: Habilita la automatización en la propiedad push

Para habilitar la integración push automática, establece la propiedad automation de la configuración push en true:

let configuration = Braze.Configuration(apiKey: "{YOUR-BRAZE-API-KEY}", endpoint: "{YOUR-BRAZE-API-ENDPOINT}")
configuration.push.automation = true
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{YOUR-BRAZE-API-KEY}" endpoint:@"{YOUR-BRAZE-API-ENDPOINT}"];
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initEnablingAllAutomations:YES];

Esto indica al SDK que:

  • Registre tu aplicación para notificaciones push en el sistema.
  • Solicite la autorización/permiso de notificaciones push en la inicialización.
  • Proporcione dinámicamente implementaciones para los métodos de delegado del sistema relacionados con las notificaciones push.

Paso 3.2: Anula configuraciones individuales (opcional)

Para un control más granular, cada paso de automatización puede habilitarse o deshabilitarse individualmente:

// Enable all automations and disable the automatic notification authorization request at launch.
configuration.push.automation = true
configuration.push.automation.requestAuthorizationAtLaunch = false
// Enable all automations and disable the automatic notification authorization request at launch.
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initEnablingAllAutomations:YES];
configuration.push.automation.requestAuthorizationAtLaunch = NO;

Consulta Braze.Configuration.Push.Automation para conocer todas las opciones disponibles y automation para obtener más información sobre el comportamiento de la automatización.

Paso 3.1: Regístrate para notificaciones push con APNs

Incluye el ejemplo de código apropiado dentro del método delegado application:didFinishLaunchingWithOptions: de tu aplicación para que los dispositivos de tus usuarios puedan registrarse con APNs. Asegúrate de llamar a todo el código de integración push en el hilo principal de tu aplicación.

Braze también proporciona categorías push predeterminadas para la compatibilidad con botones de acción para notificación push, que deben añadirse manualmente a tu código de registro push. Consulta botones de acción para notificación push para conocer los pasos de integración adicionales.

Añade el siguiente código al método application:didFinishLaunchingWithOptions: del delegado de tu aplicación.

application.registerForRemoteNotifications()
let center = UNUserNotificationCenter.current()
center.setNotificationCategories(Braze.Notifications.categories)
center.delegate = self
var options: UNAuthorizationOptions = [.alert, .sound, .badge]
if #available(iOS 12.0, *) {
  options = UNAuthorizationOptions(rawValue: options.rawValue | UNAuthorizationOptions.provisional.rawValue)
}
center.requestAuthorization(options: options) { granted, error in
  print("Notification authorization, granted: \(granted), error: \(String(describing: error))")
}
[application registerForRemoteNotifications];
UNUserNotificationCenter *center = UNUserNotificationCenter.currentNotificationCenter;
[center setNotificationCategories:BRZNotifications.categories];
center.delegate = self;
UNAuthorizationOptions options = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
if (@available(iOS 12.0, *)) {
  options = options | UNAuthorizationOptionProvisional;
}
[center requestAuthorizationWithOptions:options
                      completionHandler:^(BOOL granted, NSError *_Nullable error) {
                        NSLog(@"Notification authorization, granted: %d, "
                              @"error: %@)",
                              granted, error);
}];

Paso 3.2: Registra tokens de notificaciones push con Braze

Una vez que el registro con APNs se haya completado, pasa el deviceToken resultante a Braze para habilitar las notificaciones push para el usuario.

Añade el siguiente código al método application(_:didRegisterForRemoteNotificationsWithDeviceToken:) de tu aplicación:

AppDelegate.braze?.notifications.register(deviceToken: deviceToken)

Añade el siguiente código al método application:didRegisterForRemoteNotificationsWithDeviceToken: de tu aplicación:

[AppDelegate.braze.notifications registerDeviceToken:deviceToken];

Paso 3.3: Habilita la gestión de push

A continuación, pasa las notificaciones push recibidas a Braze. Este paso es necesario para registrar análisis push y gestionar vínculos. Asegúrate de llamar a todo el código de integración push en el hilo principal de tu aplicación.

Gestión push predeterminada

Para habilitar la gestión push predeterminada de Braze, añade el siguiente código al método application(_:didReceiveRemoteNotification:fetchCompletionHandler:) de tu aplicación:

if let braze = AppDelegate.braze, braze.notifications.handleBackgroundNotification(
  userInfo: userInfo,
  fetchCompletionHandler: completionHandler
) {
  return
}
completionHandler(.noData)

A continuación, añade lo siguiente al método userNotificationCenter(_:didReceive:withCompletionHandler:) de tu aplicación:

if let braze = AppDelegate.braze, braze.notifications.handleUserNotification(
  response: response,
  withCompletionHandler: completionHandler
) {
  return
}
completionHandler()

Para habilitar la gestión push predeterminada de Braze, añade el siguiente código al método application:didReceiveRemoteNotification:fetchCompletionHandler: de tu aplicación:

BOOL processedByBraze = AppDelegate.braze != nil && [AppDelegate.braze.notifications handleBackgroundNotificationWithUserInfo:userInfo
                                                                                                       fetchCompletionHandler:completionHandler];
if (processedByBraze) {
  return;
}

completionHandler(UIBackgroundFetchResultNoData);

A continuación, añade el siguiente código al método (void)userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: de tu aplicación:

BOOL processedByBraze = AppDelegate.braze != nil && [AppDelegate.braze.notifications handleUserNotificationWithResponse:response
                                                                                                  withCompletionHandler:completionHandler];
if (processedByBraze) {
  return;
}

completionHandler();
Gestión push en primer plano

Para habilitar las notificaciones push en primer plano y permitir que Braze las reconozca cuando se reciben, implementa UNUserNotificationCenter.userNotificationCenter(_:willPresent:withCompletionHandler:). Si un usuario toca tu notificación en primer plano, se llamará al delegado push userNotificationCenter(_:didReceive:withCompletionHandler:) y Braze registrará el evento de clic de push.

func userNotificationCenter(
  _ center: UNUserNotificationCenter,
  willPresent notification: UNNotification,
  withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions
) -> Void) {
  if let braze = AppDelegate.braze {
    // Forward notification payload to Braze for processing.
    braze.notifications.handleForegroundNotification(notification: notification)
  }

  // Configure application's foreground notification display options.
  if #available(iOS 14.0, *) {
    completionHandler([.list, .banner])
  } else {
    completionHandler([.alert])
  }
}

Para habilitar las notificaciones push en primer plano y permitir que Braze las reconozca cuando se reciben, implementa userNotificationCenter:willPresentNotification:withCompletionHandler:. Si un usuario toca tu notificación en primer plano, se llamará al delegado push userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: y Braze registrará el evento de clic de push.

- (void)userNotificationCenter:(UNUserNotificationCenter *)center
       willPresentNotification:(UNNotification *)notification
         withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
  if (AppDelegate.braze != nil) {
    // Forward notification payload to Braze for processing.
    [AppDelegate.braze.notifications handleForegroundNotificationWithNotification:notification];
  }

  // Configure application's foreground notification display options.
  if (@available(iOS 14.0, *)) {
    completionHandler(UNNotificationPresentationOptionList | UNNotificationPresentationOptionBanner);
  } else {
    completionHandler(UNNotificationPresentationOptionAlert);
  }
}

Prueba de notificaciones

Si quieres probar las notificaciones dentro de la aplicación y las notificaciones push a través de la línea de comandos, puedes enviar una única notificación a través del terminal mediante CURL y la API de mensajería. Tendrás que sustituir los siguientes campos por los valores correctos para tu caso de prueba:

  • YOUR_API_KEY - disponible en Configuración > Claves de API.
  • YOUR_EXTERNAL_USER_ID - disponible en la página Buscar usuarios. Para más información, consulta asignar ID de usuario.
  • YOUR_KEY1 (opcional)
  • YOUR_VALUE1 (opcional)

En el siguiente ejemplo, se utiliza la instancia US-01. Si no estás en esta instancia, consulta nuestra documentación de la API para ver a qué endpoint debes hacer solicitudes.

curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer {YOUR_API_KEY}" -d '{
  "external_user_ids":["YOUR_EXTERNAL_USER_ID"],
  "messages": {
    "apple_push": {
      "alert":"Test push",
      "extra": {
        "YOUR_KEY1":"YOUR_VALUE1"
      }
    }
  }
}' https://rest.iad-01.braze.com/messages/send

Suscribirse a actualizaciones de notificaciones push

Para acceder a las cargas útiles de notificaciones push procesadas por Braze, utiliza el método Braze.Notifications.subscribeToUpdates(payloadTypes:_:).

Puedes usar el parámetro payloadTypes para especificar si deseas suscribirte a notificaciones que involucren eventos de apertura push, eventos de recepción push, o ambos.

// This subscription is maintained through a Braze cancellable, which will observe for changes until the subscription is cancelled.
// You must keep a strong reference to the cancellable to keep the subscription active.
// The subscription is canceled either when the cancellable is deinitialized or when you call its `.cancel()` method.
let cancellable = AppDelegate.braze?.notifications.subscribeToUpdates(payloadTypes: [.open, .received]) { payload in
  print("Braze processed notification with title '\(payload.title)' and body '\(payload.body)'")
}
NSInteger filtersValue = BRZNotificationsPayloadTypeFilter.opened.rawValue | BRZNotificationsPayloadTypeFilter.received.rawValue;
BRZNotificationsPayloadTypeFilter *filters = [[BRZNotificationsPayloadTypeFilter alloc] initWithRawValue: filtersValue];
BRZCancellable *cancellable = [notifications subscribeToUpdatesWithPayloadTypes:filters update:^(BRZNotificationsPayload * _Nonnull payload) {
  NSLog(@"Braze processed notification with title '%@' and body '%@'", payload.title, payload.body);
}];

Gestión de notificaciones en primer plano

De forma predeterminada, cuando una notificación push llega mientras tu aplicación está en primer plano, iOS no la muestra automáticamente. Para mostrar notificaciones push en primer plano y rastrearlas con los análisis de Braze, llama al método handleForegroundNotification(notification:) dentro de tu implementación de UNUserNotificationCenterDelegate.userNotificationCenter(_:willPresent:withCompletionHandler:).

Cómo funciona

Cuando llamas a handleForegroundNotification(notification:), Braze procesa la carga útil de la notificación para registrar análisis y gestionar vínculos profundos o acciones de botones. El comportamiento de visualización real se controla mediante las UNNotificationPresentationOptions que pasas al controlador de finalización.

import BrazeKit
import UserNotifications

extension AppDelegate: UNUserNotificationCenterDelegate {
  func userNotificationCenter(
    _ center: UNUserNotificationCenter,
    willPresent notification: UNNotification,
    withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
  ) {
    // Let Braze process the notification payload
    if let braze = AppDelegate.braze {
      braze.notifications.handleForegroundNotification(notification: notification)
    }

    // Control how the notification appears in the foreground
    if #available(iOS 14.0, *) {
      completionHandler([.banner, .list, .sound])
    } else {
      completionHandler([.alert, .sound])
    }
  }
}

Para ver un ejemplo completo, consulta el ejemplo de integración manual de notificaciones push en el repositorio del SDK Swift de Braze.

Push primers

Las campañas de push primer animan a tus usuarios a habilitar las notificaciones push de tu aplicación en sus dispositivos. Esto puede hacerse sin necesidad de personalizar el SDK utilizando nuestro push primer sin código.

Gestión dinámica de la gateway de APNs

La gestión dinámica de la gateway del servicio de notificaciones push de Apple (APNs) mejora la fiabilidad y eficiencia de las notificaciones push en iOS al detectar automáticamente el entorno APNs correcto. Anteriormente, tenías que seleccionar manualmente los entornos APNs (desarrollo o producción) para tus notificaciones push, lo que a veces provocaba configuraciones de gateway incorrectas, fallos en la entrega y errores BadDeviceToken.

Con la gestión dinámica de la gateway de APNs, tendrás:

  • Mayor fiabilidad: las notificaciones siempre se entregan al entorno APNs correcto, lo que reduce los fallos en la entrega.
  • Configuración simplificada: ya no necesitas gestionar manualmente la configuración de la gateway de APNs.
  • Resiliencia ante errores: los valores de gateway no válidos o ausentes se gestionan de forma fluida, proporcionando un servicio ininterrumpido.

Requisitos previos

Braze es compatible con la gestión dinámica de la gateway de APNs para notificaciones push en iOS con el siguiente requisito de versión del SDK:

Cómo funciona

Cuando una aplicación iOS se integra con el SDK Swift de Braze, envía datos relacionados con el dispositivo, incluyendo aps-environment, a la API del SDK de Braze, si está disponible. El valor apns_gateway indica si la aplicación está utilizando el entorno APNs de desarrollo (dev) o de producción (prod).

Braze también almacena el valor de gateway reportado para cada dispositivo. Si se recibe un nuevo valor de gateway válido, Braze actualiza el valor almacenado automáticamente.

Cuando Braze envía una notificación push:

  • Si hay un valor de gateway válido (dev o prod) almacenado para el dispositivo, Braze lo utiliza para determinar el entorno APNs correcto.
  • Si no hay un valor de gateway almacenado, Braze utiliza de forma predeterminada el entorno APNs configurado en la página Configuración de la aplicación.

Preguntas frecuentes

¿Por qué se introdujo esta característica?

Con la gestión dinámica de la gateway de APNs, el entorno correcto se selecciona automáticamente. Anteriormente, tenías que configurar manualmente la gateway de APNs, lo que podía provocar errores BadDeviceToken, invalidación de tokens y posibles problemas de limitación de velocidad de APNs.

¿Cómo afecta esto al rendimiento de la entrega push?

Esta característica mejora las tasas de entrega al enrutar siempre los tokens de notificaciones push al entorno APNs correcto, evitando fallos causados por gateways mal configuradas.

¿Puedo desactivar esta característica?

La gestión dinámica de la gateway de APNs está activada de forma predeterminada y ofrece mejoras de fiabilidad. Si tienes ejemplos específicos que requieran la selección manual de la gateway, ponte en contacto con soporte de Braze.

Acerca de las notificaciones push para Android TV

Ilustración de un dispositivo Android TV utilizada para la guía de notificaciones push de Android TV.

Aunque no es una característica nativa, la integración de notificaciones push en Android TV es posible aprovechando el SDK de Braze para Android y Firebase Cloud Messaging para registrar un token push para Android TV. Sin embargo, debes crear una interfaz de usuario para mostrar la carga útil de la notificación una vez recibida.

Requisitos previos

Para utilizar esta característica, debes completar lo siguiente:

Configurar las notificaciones push

Para configurar las notificaciones push en Android TV:

  1. Crea una vista personalizada en tu aplicación para mostrar tus notificaciones.
  2. Crea una fábrica de notificaciones personalizada. Esto anula el comportamiento predeterminado del SDK y te permite mostrar las notificaciones manualmente. Al devolver null, se evita que el SDK procese la notificación y se requiere código personalizado para mostrarla. Después de completar estos pasos, puedes empezar a enviar notificaciones push a Android TV.

  3. (Opcional) Para realizar un seguimiento eficaz de los análisis de clics, configura el seguimiento de análisis de clics. Esto se puede lograr creando una devolución de llamada push para escuchar las intenciones de push abierto y recibido de Braze.

Probar las notificaciones push de Android TV

Para comprobar si tu implementación de push es correcta, envía una notificación desde el panel de Braze como lo harías normalmente para un dispositivo Android.

  • Si la aplicación está cerrada: El mensaje push muestra una notificación de tipo toast en la pantalla.
  • Si la aplicación está abierta: Tienes la oportunidad de mostrar el mensaje en tu propia interfaz de usuario alojada. Sigue el estilo de interfaz de usuario de los mensajes dentro de la aplicación del SDK de Android para móviles.

Mejores prácticas

Para los especialistas en marketing que utilizan Braze, lanzar una campaña a Android TV es idéntico a lanzar una notificación push a aplicaciones móviles de Android. Para dirigirte exclusivamente a estos dispositivos, selecciona la aplicación de Android TV en la segmentación.

La respuesta de entrega y clic devuelta por FCM sigue la misma convención que un dispositivo Android móvil; por lo tanto, cualquier error es visible en Observabilidad de mensajería.

Requisitos previos

Antes de poder utilizar esta característica, tendrás que integrar el SDK de Braze para Cordova. Después de integrar el SDK, la funcionalidad básica de notificaciones push se habilita de forma predeterminada. Para utilizar notificaciones push enriquecidas y Push Stories, tendrás que configurarlas individualmente. Para utilizar los mensajes push de iOS, también necesitas cargar un certificado push válido.

Habilitar la vinculación en profundidad push

De forma predeterminada, el SDK de Braze para Cordova no gestiona automáticamente los vínculos profundos de las notificaciones push. Para habilitar la vinculación en profundidad push, sigue los pasos de configuración en Vinculación en profundidad. Para más detalles sobre estas y otras opciones de configuración push, consulta Configuraciones opcionales.

Desactivar las notificaciones push básicas (solo iOS)

Después de integrar el SDK de Braze para Cordova en iOS, la funcionalidad básica de notificaciones push está habilitada de forma predeterminada. Para desactivar esta funcionalidad en tu aplicación iOS, añade lo siguiente a tu archivo config.xml. Para más información, consulta Configuraciones opcionales.

<platform name="ios">
    <preference name="com.braze.ios_disable_automatic_push_registration" value="NO" />
    <preference name="com.braze.ios_disable_automatic_push_handling" value="NO" />
</platform>

Requisitos previos

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

Configurar notificaciones push

Paso 1: Completa la configuración inicial

Paso 1.1: Registrarse para push

Regístrate para push utilizando la API Firebase Cloud Messaging (FCM) de Google. Para un recorrido completo, consulta los siguientes pasos de la guía de integración push nativa de Android:

  1. Añadir Firebase a tu proyecto.
  2. Añadir Cloud Messaging a tus dependencias.
  3. Crear una cuenta de servicio.
  4. Generar credenciales JSON.
  5. Subir tus credenciales JSON a Braze.

Paso 1.2: Obtener tu ID de remitente de Google

Primero, ve a la consola de Firebase, abre tu proyecto y selecciona  Settings > Project settings.

El proyecto de Firebase con el menú "Settings" abierto.

Selecciona Cloud Messaging y, en Firebase Cloud Messaging API (V1), copia el Sender ID en tu portapapeles.

La página "Cloud Messaging" del proyecto de Firebase con el "Sender ID" resaltado.

Paso 1.3: Actualizar tu braze.xml

Añade lo siguiente a tu archivo braze.xml. Sustituye FIREBASE_SENDER_ID por el ID de remitente que copiaste anteriormente.

<bool translatable="false" name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
<string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">FIREBASE_SENDER_ID</string>

Paso 1.1: Subir certificados de APN

Genera un certificado del servicio de notificaciones push de Apple (APN) y súbelo al panel de Braze. Para un recorrido completo, consulta Subir tu certificado de APN.

Paso 1.2: Añadir soporte de notificaciones push a tu aplicación

Sigue la guía de integración nativa de iOS.

Paso 2: Escuchar eventos de notificaciones push (opcional)

Para escuchar los eventos de notificaciones push que Braze ha detectado y gestionado, llama a subscribeToPushNotificationEvents() y pasa un argumento para ejecutar.

// Create stream subscription
StreamSubscription pushEventsStreamSubscription;

pushEventsStreamSubscription = braze.subscribeToPushNotificationEvents((BrazePushEvent pushEvent) {
  print("Push Notification event of type ${pushEvent.payloadType} seen. Title ${pushEvent.title}\n and deeplink ${pushEvent.url}");
  // Handle push notification events
});

// Cancel stream subscription
pushEventsStreamSubscription.cancel();

Campos de eventos de notificaciones push

Para obtener una lista completa de los campos de notificaciones push, consulta la siguiente tabla:

Nombre del campo Tipo Descripción
payloadType String Especifica el tipo de carga útil de la notificación. Los dos valores que se envían desde el SDK Flutter de Braze son push_opened y push_received. Solo los eventos push_opened son compatibles en iOS.
url String Especifica la URL que fue abierta por la notificación.
useWebview Boolean Si es true, la URL se abre dentro de la aplicación en un webview modal. Si es false, la URL se abre en el navegador del dispositivo.
title String Representa el título de la notificación.
body String Representa el cuerpo o texto de contenido de la notificación.
summaryText String Representa el texto de resumen de la notificación. Se mapea desde subtitle en iOS.
badgeCount Number Representa el recuento de señales de la notificación.
timestamp Number Representa el momento en que la aplicación recibió la carga útil.
isSilent Boolean Si es true, la carga útil se recibe de forma silenciosa. Para más información sobre el envío de notificaciones push silenciosas en Android, consulta Notificaciones push silenciosas en Android. Para más información sobre el envío de notificaciones push silenciosas en iOS, consulta Notificaciones push silenciosas en iOS.
isBrazeInternal Boolean Es true si la carga útil de la notificación fue enviada para una característica interna del SDK, como la sincronización de conmutadores de características o Uninstall Tracking. La carga útil se recibe de forma silenciosa para el usuario.
imageUrl String Especifica la URL asociada con la imagen de la notificación.
brazeProperties Object Representa las propiedades de Braze asociadas con la Campaign (pares clave-valor).
ios Object Representa los campos específicos de iOS.
android Object Representa los campos específicos de Android.

Paso 3: Probar la visualización de notificaciones push

Para probar tu integración después de configurar las notificaciones push en la capa nativa:

  1. Establece un usuario activo en la aplicación Flutter. Para ello, inicializa tu plugin llamando a braze.changeUser('your-user-id').
  2. Ve a Campaigns y crea una nueva Campaign de notificación push. Elige las plataformas que quieras probar.
  3. Compón tu notificación de prueba y ve a la pestaña Test. Añade el mismo user-id como usuario de prueba y haz clic en Send Test.
  4. Deberías recibir la notificación en tu dispositivo en breve. Es posible que necesites comprobar el centro de notificaciones o actualizar la configuración si no se muestra.

Para permitir que Braze abra automáticamente tu aplicación y cualquier vínculo profundo cuando se toca una notificación push, establece com_braze_handle_push_deep_links_automatically en true en tu braze.xml:

<bool name="com_braze_handle_push_deep_links_automatically">true</bool>

Este indicador también se puede establecer mediante la configuración en tiempo de ejecución en tu código nativo de Android:

val brazeConfig = BrazeConfig.Builder()
        .setHandlePushDeepLinksAutomatically(true)
        .build()
Braze.configure(this, brazeConfig)

Si quieres gestionar los vínculos profundos de forma personalizada, utiliza el oyente subscribeToPushNotificationEvents() descrito en el paso 2 para enrutar tú mismo el campo url del evento push_opened. Para más información, consulta Vinculación en profundidad.

Requisitos previos

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

Configurar las notificaciones push

Los teléfonos más recientes fabricados por Huawei vienen equipados con Huawei Mobile Services (HMS), un servicio utilizado para entregar notificaciones push en lugar de Firebase Cloud Messaging (FCM) de Google.

Paso 1: Registrar una cuenta de desarrollador de Huawei

Antes de empezar, tendrás que registrarte y configurar una cuenta de desarrollador de Huawei. En tu cuenta de Huawei, ve a My Projects > Project Settings > App Information y toma nota del App ID y del App secret.

Página de información de la aplicación en la consola para desarrolladores de Huawei, mostrando el App ID y el App secret.

Paso 2: Crear una nueva aplicación Huawei en el panel de Braze

En el panel de Braze, ve a Configuración de la aplicación, que aparece en la navegación de Configuración.

Haz clic en + Add App, proporciona un nombre (como Mi aplicación Huawei) y selecciona Android como plataforma.

Diálogo de Braze para añadir aplicación, creando una aplicación Android Huawei.

Una vez creada tu nueva aplicación de Braze, localiza la configuración de notificaciones push y selecciona Huawei como proveedor de push. A continuación, proporciona tu Huawei Client Secret y tu Huawei App ID.

Configuración del proveedor push de Huawei en Braze con los campos Huawei App ID y Client Secret.

Paso 3: Integrar el SDK de mensajería de Huawei en tu aplicación

Huawei ha proporcionado un codelab de integración para Android que detalla cómo integrar el servicio de mensajería de Huawei en tu aplicación. Sigue esos pasos para empezar.

Después de completar el codelab, tendrás que crear un servicio de mensajes de Huawei personalizado para obtener tokens de notificaciones push y reenviar mensajes al SDK de Braze.

public class CustomPushService extends HmsMessageService {
  @Override
  public void onNewToken(String token) {
    super.onNewToken(token);
    Braze.getInstance(this.getApplicationContext()).setRegisteredPushToken(token);
  }

  @Override
  public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    if (BrazeHuaweiPushHandler.handleHmsRemoteMessageData(this.getApplicationContext(), remoteMessage.getDataOfMap())) {
      // Braze has handled the Huawei push notification
    }
  }
}
class CustomPushService: HmsMessageService() {
  override fun onNewToken(token: String?) {
    super.onNewToken(token)
    Braze.getInstance(applicationContext).setRegisteredPushToken(token!!)
  }

  override fun onMessageReceived(hmsRemoteMessage: RemoteMessage?) {
    super.onMessageReceived(hmsRemoteMessage)
    if (BrazeHuaweiPushHandler.handleHmsRemoteMessageData(applicationContext, hmsRemoteMessage?.dataOfMap)) {
      // Braze has handled the Huawei push notification
    }
  }
}

Después de añadir tu servicio push personalizado, añade lo siguiente a tu AndroidManifest.xml:

<service
  android:name="package.of.your.CustomPushService"
  android:exported="false">
  <intent-filter>
    <action android:name="com.huawei.push.action.MESSAGING_EVENT" />
  </intent-filter>
</service>

Paso 4: Gestionar las notificaciones en primer plano

De forma predeterminada, cuando llega una notificación push mientras tu aplicación está en primer plano, Huawei la muestra automáticamente. Para que Braze procese la carga útil de la notificación push (para seguimiento de análisis, gestión de vínculos profundos y procesamiento personalizado), dirige los datos push entrantes a Braze dentro de tu método HmsMessageService.onMessageReceived.

Cuando llamas a BrazeHuaweiPushHandler.handleHmsRemoteMessageData, Braze determina si la carga útil es una notificación push de Braze y, de ser así, crea y muestra la notificación. Para más información, consulta Gestionar las notificaciones en primer plano en la documentación de notificaciones push de Android.

Para ver un ejemplo completo, consulta la referencia del controlador de Huawei en la documentación del SDK de Braze para Android.

Paso 5: Probar tus notificaciones push (opcional)

En este punto, has creado una nueva aplicación Android Huawei en el panel de Braze, la has configurado con tus credenciales de desarrollador de Huawei y has integrado los SDK de Braze y Huawei en tu aplicación.

A continuación, podemos probar la integración realizando una prueba con una nueva Campaign push en Braze.

Paso 5.1: Crear una nueva Campaign de notificación push

En la página Campaigns, crea una nueva Campaign y elige Push Notification como tipo de mensaje.

Después de nombrar tu Campaign, elige Android Push como plataforma push.

El creador de Campaigns mostrando las plataformas push disponibles.

A continuación, redacta tu Campaign push con un título y un mensaje.

Paso 5.2: Enviar una notificación push de prueba

En la pestaña Test, introduce tu ID de usuario, que has configurado en tu aplicación usando el método changeUser(USER_ID_STRING), y haz clic en Send Test para enviar una notificación push de prueba.

La pestaña de prueba en el creador de Campaigns muestra que puedes enviarte un mensaje de prueba a ti mismo proporcionando tu ID de usuario e introduciéndolo en el campo "Add Individual Users".

En este punto, deberías recibir una notificación push de prueba en tu dispositivo Huawei (HMS) desde Braze.

Paso 5.3: Configurar la segmentación de Huawei (opcional)

Dado que tu aplicación Huawei en el panel de Braze está basada en la plataforma push de Android, tienes la flexibilidad de enviar notificaciones push a todos los usuarios de Android (Firebase Cloud Messaging y Huawei Mobile Services), o puedes optar por segmentar la audiencia de tu Campaign para aplicaciones específicas.

Para enviar notificaciones push solo a aplicaciones Huawei, crea un nuevo Segment y selecciona tu aplicación Huawei dentro de la sección Apps.

Filtro de aplicación de Segment en Braze seleccionando la aplicación Huawei para la segmentación push.

Por supuesto, si quieres enviar la misma notificación push a todos los proveedores push de Android, puedes optar por no especificar la aplicación, lo que enviará a todas las aplicaciones Android configuradas dentro del espacio de trabajo actual.

Requisitos previos

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

Configuración de notificaciones push

Paso 1: Completa la configuración inicial

Requisitos previos

Antes de poder utilizar Expo para las notificaciones push, deberás configurar el complemento Braze Expo.

Paso 1.1: Actualiza tu archivo app.json

A continuación, actualiza tu archivo app.json para Android e iOS:

  • Android: Añade la opción enableFirebaseCloudMessaging.
  • iOS: Añade la opción enableBrazeIosPush.

Paso 1.2: Añade tu ID de remitente de Google

Primero, ve a la consola de Firebase, abre tu proyecto y selecciona  Settings > Project settings.

El proyecto Firebase con el menú «Settings» abierto.

Selecciona Cloud Messaging y, a continuación, en Firebase Cloud Messaging API (V1), copia el Sender ID en el portapapeles.

La página «Cloud Messaging» del proyecto Firebase con el «Sender ID» resaltado.

A continuación, abre el archivo app.json de tu proyecto y establece la propiedad firebaseCloudMessagingSenderId en el Sender ID de tu portapapeles. Por ejemplo:

"firebaseCloudMessagingSenderId": "693679403398"

Paso 1.3: Añade la ruta a tu JSON de Google Services

En el archivo app.json de tu proyecto, añade la ruta a tu archivo google-services.json. Este archivo es necesario para establecer enableFirebaseCloudMessaging: true en tu configuración.

{
  "expo": {
    "android": {
      "googleServicesFile": "PATH_TO_GOOGLE_SERVICES"
    },
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          "androidApiKey": "YOUR-ANDROID-API-KEY",
          "iosApiKey": "YOUR-IOS-API-KEY",
          "enableBrazeIosPush": true,
          "enableFirebaseCloudMessaging": true,
          "firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
          "androidHandlePushDeepLinksAutomatically": true
        }
      ],
    ]
  }
}

Ten en cuenta que tendrás que utilizar esta configuración en lugar de las instrucciones de configuración nativas si dependes de bibliotecas de notificaciones push adicionales como Expo Notifications.

Si no utilizas el complemento Braze Expo o prefieres configurar estos ajustes de forma nativa, realiza el registro para recibir notificaciones push consultando la guía de integración de notificaciones push nativas de Android.

Si no utilizas el complemento Braze Expo o prefieres configurar estos ajustes de forma nativa, realiza el registro para recibir notificaciones push siguiendo los pasos que se indican en la guía de integración nativa de notificaciones push para iOS:

Paso 1.1: Solicitud de permisos push

Si no tienes pensado solicitar permisos push cuando se inicie la aplicación, omite la llamada requestAuthorizationWithOptions:completionHandler: en tu AppDelegate. A continuación, pasa al paso 2. Si no, sigue la guía de integración nativa de iOS.

Paso 1.2 (Opcional): Migra tu clave push

Si antes utilizabas expo-notifications para administrar tu clave push, ejecuta expo fetch:ios:certs desde la carpeta raíz de tu aplicación. Esto descargará tu clave push (un archivo .p8), que luego podrás cargar en el panel de Braze.

Paso 2: Solicitar permiso para notificaciones push

Utiliza el método Braze.requestPushPermission() (disponible a partir de la v1.38.0) para solicitar permiso para notificaciones push al usuario en iOS y Android 13+. Para Android 12 e inferiores, este método no tiene efecto.

Este método recibe un parámetro obligatorio que especifica qué permisos debe solicitar el SDK al usuario en iOS. Estas opciones no tienen efecto en Android.

const permissionOptions = {
  alert: true,
  sound: true,
  badge: true,
  provisional: false
};

Braze.requestPushPermission(permissionOptions);

Paso 2.1: Escuchar notificaciones push (opcional)

Además, puedes suscribirte a eventos en los que Braze haya detectado y gestionado una notificación push entrante. Utiliza la clave de escucha Braze.Events.PUSH_NOTIFICATION_EVENT.

Braze.addListener(Braze.Events.PUSH_NOTIFICATION_EVENT, data => {
  console.log(`Push Notification event of type ${data.payload_type} seen. Title ${data.title}\n and deeplink ${data.url}`);
  console.log(JSON.stringify(data, undefined, 2));
});
Campos de evento de notificación push

Para obtener una lista completa de los campos de notificación push, consulta la tabla siguiente:

Nombre del campo Tipo Descripción
payload_type Cadena Especifica el tipo de carga útil de la notificación. Los dos valores que se envían desde el SDK de Braze para React Native son push_opened y push_received.
url Cadena Especifica la URL abierta por la notificación.
use_webview Booleano Si es true, la URL se abrirá dentro de la aplicación en una vista web modal. Si es false, la URL se abrirá en el navegador del dispositivo.
title Cadena Representa el título de la notificación.
body Cadena Representa el cuerpo o texto del contenido de la notificación.
summary_text Cadena Representa el texto resumido de la notificación. Está mapeado desde subtitle en iOS.
badge_count Número Representa el recuento de señales de la notificación.
timestamp Número Representa la hora a la que la aplicación recibió la carga útil.
is_silent Booleano Si es true, la carga útil se recibe en silencio. Para más detalles sobre el envío de notificaciones push silenciosas en Android, consulta Notificaciones push silenciosas en Android. Para más detalles sobre el envío de notificaciones push silenciosas en iOS, consulta Notificaciones push silenciosas en iOS.
is_braze_internal Booleano Será true si se envió una carga útil de notificación para una característica interna del SDK, como la sincronización de conmutadores de características o Uninstall Tracking. La carga útil se recibe de forma silenciosa para el usuario.
image_url Cadena Especifica la URL asociada a la imagen de notificación.
braze_properties Objeto Representa las propiedades de Braze asociadas a la Campaign (pares clave-valor).
ios Objeto Representa campos específicos de iOS.
android Objeto Representa campos específicos de Android.

Paso 3: Habilitar la vinculación en profundidad (opcional)

Para habilitar que Braze pueda gestionar vínculos profundos dentro de los componentes React cuando se hace clic en una notificación push, primero implementa los pasos descritos en la biblioteca React Native Linking o con la solución que prefieras. A continuación, sigue los pasos adicionales.

Para saber más sobre qué son los vínculos profundos, consulta nuestro artículo de preguntas frecuentes.

Si utilizas el complemento Braze Expo, puedes gestionar automáticamente los vínculos profundos de las notificaciones push configurando androidHandlePushDeepLinksAutomatically en true en tu app.json.

Para gestionar los vínculos profundos manualmente, consulta la documentación nativa de Android: Añadir vínculos profundos.

Paso 3.1: Almacenar la carga útil de la notificación push al iniciar la aplicación

Añade populateInitialPushPayloadFromIntent al método onCreate() de tu actividad principal. Esto debe llamarse antes de que React Native se inicialice para capturar los datos iniciales de intención. Por ejemplo:

override fun onCreate(savedInstanceState: Bundle?) {
  BrazeReactUtils.populateInitialPushPayloadFromIntent(intent)
  super.onCreate(savedInstanceState)
}

Además de los escenarios básicos que maneja React Native Linking, implementa el método Braze.getInitialPushPayload y recupera el valor url para tener en cuenta los vínculos profundos de las notificaciones push que abren tu aplicación cuando no está en ejecución. Por ejemplo:

// Handles deep links when an app is launched from a hard close via push click.
Braze.getInitialPushPayload(pushPayload => {
  if (pushPayload) {
    console.log('Braze.getInitialPushPayload is ' + pushPayload);
    showToast('Initial URL is ' + pushPayload.url);
    handleOpenUrl({ pushPayload.url });
  }
});

Esto incluye registrar un esquema de URL personalizado e implementar un controlador de URL en tu AppDelegate. Para obtener instrucciones completas de configuración, consulta Gestión de vínculos profundos en la documentación nativa de iOS.

Paso 3.1: Almacenar la carga útil de la notificación push al iniciar la aplicación

Para iOS, añade populateInitialPayloadFromLaunchOptions al método didFinishLaunchingWithOptions de tu AppDelegate. Por ejemplo:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  // ... Perform regular React Native setup

  BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:apiKey endpoint:endpoint];
  configuration.triggerMinimumTimeInterval = 1;
  configuration.logger.level = BRZLoggerLevelInfo;
  Braze *braze = [BrazeReactBridge initBraze:configuration];
  AppDelegate.braze = braze;

  [self registerForPushNotifications];
  [[BrazeReactUtils sharedInstance] populateInitialPayloadFromLaunchOptions:launchOptions];

  return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
func application(
  _ application: UIApplication,
  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
  // ... Perform regular React Native setup

  let configuration = Braze.Configuration(apiKey: apiKey, endpoint: endpoint)
  configuration.triggerMinimumTimeInterval = 1
  configuration.logger.level = .info
  let braze = BrazeReactBridge.initBraze(configuration)
  AppDelegate.braze = braze
  registerForPushNotifications()
  BrazeReactUtils.shared().populateInitialPayload(fromLaunchOptions: launchOptions)

  return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}

Paso 3.2: Gestionar vínculos profundos desde un estado cerrado

Además de los escenarios básicos que maneja React Native Linking, implementa el método Braze.getInitialPushPayload y recupera el valor url para tener en cuenta los vínculos profundos de las notificaciones push que abren tu aplicación cuando no está en ejecución. Por ejemplo:

// Handles deep links when an app is launched from a hard close via push click.
Braze.getInitialPushPayload(pushPayload => {
  if (pushPayload) {
    console.log('Braze.getInitialPushPayload is ' + pushPayload);
    showToast('Initial URL is ' + pushPayload.url);
    handleOpenUrl({ pushPayload.url });
  }
});

Para habilitar la compatibilidad con enlaces universales, implementa un delegado de Braze que determine si se debe abrir una URL determinada y, a continuación, regístralo en tu instancia de Braze.

Crea un archivo BrazeReactDelegate.swift en tu directorio iOS y añade lo siguiente. Reemplaza YOUR_DOMAIN_HOST por tu dominio real.

import Foundation
import BrazeKit
import UIKit

class BrazeReactDelegate: NSObject, BrazeDelegate {

  /// This delegate method determines whether to open a given URL.
  /// Reference the context to get additional details about the URL payload.
  func braze(_ braze: Braze, shouldOpenURL context: Braze.URLContext) -> Bool {
    if let host = context.url.host,
       host.caseInsensitiveCompare("YOUR_DOMAIN_HOST") == .orderedSame {
      // Sample custom handling of universal links
      let application = UIApplication.shared
      let userActivity = NSUserActivity(activityType: NSUserActivityTypeBrowsingWeb)
      userActivity.webpageURL = context.url
      // Routes to the `continueUserActivity` method, which should be handled in your AppDelegate.
      application.delegate?.application?(
        application,
        continue: userActivity,
        restorationHandler: { _ in }
      )
      return false
    }
    // Let Braze handle links otherwise
    return true
  }
}

A continuación, crea y registra tu BrazeReactDelegate en didFinishLaunchingWithOptions del archivo AppDelegate.swift de tu proyecto.

import BrazeKit

class AppDelegate: UIResponder, UIApplicationDelegate {

  static var braze: Braze?

  // Keep a strong reference to the BrazeDelegate so it is not deallocated.
  private var brazeDelegate: BrazeReactDelegate?

  func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
  ) -> Bool {
    // Other setup code (e.g., Braze initialization)

    brazeDelegate = BrazeReactDelegate()
    AppDelegate.braze?.delegate = brazeDelegate
    return true
  }
}

Crea un archivo BrazeReactDelegate.h en tu directorio iOS y, a continuación, añade el siguiente fragmento de código.

#import <Foundation/Foundation.h>
#import <BrazeKit/BrazeKit-Swift.h>

@interface BrazeReactDelegate: NSObject<BrazeDelegate>

@end

A continuación, crea un archivo BrazeReactDelegate.m y añade el siguiente fragmento de código. Reemplaza YOUR_DOMAIN_HOST por tu dominio real.

#import "BrazeReactDelegate.h"
#import <UIKit/UIKit.h>

@implementation BrazeReactDelegate

/// This delegate method determines whether to open a given URL.
///
/// Reference the `BRZURLContext` object to get additional details about the URL payload.
- (BOOL)braze:(Braze *)braze shouldOpenURL:(BRZURLContext *)context {
  if ([[context.url.host lowercaseString] isEqualToString:@"YOUR_DOMAIN_HOST"]) {
    // Sample custom handling of universal links
    UIApplication *application = UIApplication.sharedApplication;
    NSUserActivity* userActivity = [[NSUserActivity alloc] initWithActivityType:NSUserActivityTypeBrowsingWeb];
    userActivity.webpageURL = context.url;
    // Routes to the `continueUserActivity` method, which should be handled in your `AppDelegate`.
    [application.delegate application:application
                 continueUserActivity:userActivity restorationHandler:^(NSArray<id<UIUserActivityRestoring>> * _Nullable restorableObjects) {}];
    return NO;
  }
  // Let Braze handle links otherwise
  return YES;
}

@end

A continuación, crea y registra tu BrazeReactDelegate en didFinishLaunchingWithOptions del archivo AppDelegate.m de tu proyecto.

#import "BrazeReactUtils.h"
#import "BrazeReactDelegate.h"

@interface AppDelegate ()

// Keep a strong reference to the BrazeDelegate to ensure it is not deallocated.
@property (nonatomic, strong) BrazeReactDelegate *brazeDelegate;

@end

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  // Other setup code

  self.brazeDelegate = [[BrazeReactDelegate alloc] init];
  braze.delegate = self.brazeDelegate;
}

Para ver un ejemplo de integración, consulta nuestra aplicación de muestra en este ejemplo de AppDelegate.

Paso 4: Gestionar las notificaciones en primer plano

La gestión de las notificaciones en primer plano funciona de manera diferente según la plataforma y la configuración. Elige el enfoque que mejor se adapte a tu integración:

En iOS, la gestión de las notificaciones en primer plano es igual que en la integración nativa de Swift. Llama a handleForegroundNotification(notification:) dentro de tu implementación de UNUserNotificationCenterDelegate.userNotificationCenter(_:willPresent:withCompletionHandler:).

Para obtener información detallada y ejemplos de código, consulta Gestión de notificaciones en primer plano en la documentación sobre notificaciones push de Swift.

En Android, la gestión de las notificaciones en primer plano es igual que en la integración nativa de Android. Llama a BrazeFirebaseMessagingService.handleBrazeRemoteMessage dentro de tu método FirebaseMessagingService.onMessageReceived.

Para obtener información detallada y ejemplos de código, consulta Gestión de notificaciones en primer plano en la documentación sobre notificaciones push de Android.

En el flujo de trabajo gestionado por Expo, no se llama directamente a los controladores de notificaciones nativos. En su lugar, utiliza la API de notificaciones de Expo para controlar la presentación en primer plano, mientras que el complemento Braze Expo se encarga automáticamente del procesamiento nativo.

import * as Notifications from 'expo-notifications';
import Braze from '@braze/react-native-sdk';

// Control foreground presentation in Expo
Notifications.setNotificationHandler({
  handleNotification: async () => ({
    shouldShowAlert: true,    // Show alert while in foreground
    shouldPlaySound: false,
    shouldSetBadge: false,
  }),
});

// React to Braze push events
const subscription = Braze.addListener('pushNotificationEvent', (event) => {
  console.log('Braze push event', {
    type: event.payload_type,   // "push_received" | "push_opened"
    title: event.title,
    url: event.url,
    is_silent: event.is_silent,
  });
  // Handle deep links, custom behavior, etc.
});

// Handle initial payload when app launches via push
Braze.getInitialPushPayload((payload) => {
  if (payload) {
    console.log('Initial push payload', payload);
  }
});

Para integraciones con flujo de trabajo básico, sigue los enfoques nativos de iOS y Android.

Paso 5: Enviar una notificación push de prueba

En este punto, deberías poder enviar notificaciones a los dispositivos. Sigue los pasos siguientes para probar tu integración push.

  1. Establece un usuario activo en la aplicación React Native llamando al método Braze.changeUserId('your-user-id').
  2. Ve a Campaigns y crea una nueva Campaign de notificación push. Elige las plataformas que deseas probar.
  3. Redacta tu notificación de prueba y dirígete a la pestaña Test. Añade el mismo user-id que el usuario de prueba y haz clic en Send Test. En breve recibirás la notificación en tu dispositivo.

Una Campaign push de Braze que muestra que puedes añadir tu propio ID de usuario como destinatario de prueba para probar tu notificación push.

Uso del plugin de Expo

Después de configurar las notificaciones push para Expo, puedes usarlo para gestionar los siguientes comportamientos de notificaciones push, sin necesidad de escribir código en las capas nativas de Android o iOS.

Reenviar push de Android a un FMS adicional

Si deseas utilizar un Firebase Messaging Service (FMS) adicional, puedes especificar un FMS alternativo al que llamar si tu aplicación recibe un push que no proviene de Braze. Por ejemplo:

{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          ...
          "androidFirebaseMessagingFallbackServiceEnabled": true,
          "androidFirebaseMessagingFallbackServiceClasspath": "com.company.OurFirebaseMessagingService"
        }
      ]
    ]
  }
}

Uso de extensiones de aplicación con Expo Application Services

Si utilizas Expo Application Services (EAS) y has habilitado enableBrazeIosRichPush o enableBrazeIosPushStories, tendrás que declarar los identificadores de paquete correspondientes para cada extensión de aplicación en tu proyecto. Hay varias formas de abordar este paso, dependiendo de cómo tu proyecto esté configurado para gestionar la firma de código con EAS.

Un enfoque es utilizar la configuración appExtensions en tu archivo app.json siguiendo la documentación de extensiones de aplicación de Expo. Alternativamente, puedes configurar el ajuste multitarget en tu archivo credentials.json siguiendo la documentación de credenciales locales de Expo.

Solución de problemas

Estos son pasos comunes de solución de problemas para integraciones de notificaciones push con el SDK de Braze para React Native y el plugin de Expo.

Las notificaciones push dejaron de funcionar

Si las notificaciones push a través del plugin de Expo dejaron de funcionar:

  1. Comprueba que el SDK de Braze sigue rastreando sesiones.
  2. Comprueba que el SDK no fue deshabilitado por una llamada explícita o implícita a wipeData.
  3. Revisa las actualizaciones recientes de Expo o sus bibliotecas relacionadas, ya que puede haber conflictos con tu configuración de Braze.
  4. Revisa las dependencias del proyecto añadidas recientemente y comprueba si están sobrescribiendo manualmente tus métodos delegados de notificaciones push existentes.

El token del dispositivo no se registra con Braze

Si el token de tu dispositivo no se registra con Braze, primero revisa Las notificaciones push dejaron de funcionar.

Si el problema persiste, puede haber una dependencia independiente que interfiere con tu configuración de notificaciones push de Braze. Puedes intentar eliminarla o llamar manualmente a Braze.registerPushToken en su lugar.

Si los vínculos profundos desde las notificaciones push dejan de abrirse después de una migración, comprueba lo siguiente:

  1. Verifica que tu configuración de React Native Linking sigue siendo válida en tu aplicación actualizada.
  2. Para integraciones nativas de iOS, confirma que implementaste populateInitialPayloadFromLaunchOptions y Braze.getInitialPushPayload de modo que, cuando la aplicación se inicia desde un estado terminado, pueda recuperar la carga útil push inicial y pasar su url a tu controlador de vínculos profundos.
  3. Si estás usando el plugin de Braze para Expo, verifica que androidHandlePushDeepLinksAutomatically esté configurado correctamente para tu implementación.
  4. Revisa las dependencias añadidas recientemente en busca de sobrescrituras en el manejo de notificaciones o el comportamiento del delegado de la aplicación.

Si completaste estas verificaciones y el problema persiste, abre un ticket de soporte e incluye los registros del SDK y los pasos de reproducción.

Requisitos previos

Antes de poder utilizar esta característica, tendrás que integrar el SDK Web de Braze. También tendrás que configurar las notificaciones push para el SDK Web. Ten en cuenta que solo puedes enviar notificaciones push a usuarios de iOS y iPadOS que utilicen Safari v16.4 o posterior.

Configurar push de Safari para móvil

Paso 1: Crear un archivo de manifiesto

Un manifiesto de aplicación web es un archivo JSON que controla cómo se presenta tu sitio web cuando se instala en la pantalla de inicio de un usuario.

Por ejemplo, puedes configurar el color del tema de fondo y el icono que utiliza el selector de aplicaciones, si se renderiza a pantalla completa para parecerse a una aplicación nativa, o si la aplicación debe abrirse en modo horizontal o vertical.

Crea un nuevo archivo manifest.json en el directorio raíz de tu sitio web, con los siguientes campos obligatorios.

{
  "name": "your app name",
  "short_name": "your app name",
  "display": "fullscreen",
  "icons": [{
    "src": "favicon.ico",
    "sizes": "128x128",
  }]
}

La lista completa de campos compatibles se encuentra en la documentación de manifiesto de aplicación web de MDN.

Añade la siguiente etiqueta <link> al elemento <head> de tu sitio web, apuntando a la ubicación donde está alojado tu archivo de manifiesto.

<link rel="manifest" href="/manifest.json" />

Paso 3: Añadir un prestador de servicios

Tu sitio web debe tener un archivo de prestador de servicios que importe la biblioteca de prestador de servicios de Braze, como se describe en nuestra guía de integración de notificaciones push web.

Paso 4: Añadir a la pantalla de inicio

Los navegadores más populares (como Safari, Chrome, FireFox y Edge) son compatibles con las notificaciones push web en sus versiones más recientes. Para solicitar permiso de push en iOS o iPadOS, tu sitio web debe añadirse a la pantalla de inicio del usuario seleccionando Compartir > Añadir a la pantalla de inicio. Añadir a la pantalla de inicio permite a los usuarios guardar tu sitio web como marcador, añadiendo tu icono a su valiosa pantalla de inicio.

Un iPhone mostrando opciones para guardar un sitio web como marcador y añadirlo a la pantalla de inicio

Paso 5: Mostrar el aviso nativo de push

Después de que la aplicación se haya añadido a tu pantalla de inicio, puedes solicitar permiso de push cuando el usuario realice una acción (como hacer clic en un botón). Esto se puede hacer utilizando el método requestPushPermission, o con un mensaje dentro de la aplicación de preparación push sin código.

Un aviso de push preguntando si se desea "permitir" o "no permitir" las notificaciones

Por ejemplo:

import { requestPushPermission } from "@braze/web-sdk";

button.onclick = function(){
    requestPushPermission(() => {
        console.log(`User accepted push prompt`);
    }, (temporary) => {
        console.log(`User ${temporary ? "temporarily dismissed" : "permanently denied"} push prompt`);
    });
};

Próximos pasos

A continuación, envíate un mensaje de prueba para validar la integración. Una vez completada la integración, puedes usar nuestros mensajes push primer sin código para optimizar tus tasas de adhesión voluntaria push.

Requisitos previos

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

Configurar notificaciones push

Paso 1: Configurar la plataforma

Paso 1.1: Habilitar Firebase

Para empezar, sigue la documentación de configuración de Firebase Unity.

Paso 1.2: Configurar tus credenciales de Firebase

Debes introducir tu clave de servidor de Firebase y el ID de remitente en el panel de Braze. Para ello, inicia sesión en la consola de desarrolladores de Firebase y selecciona tu proyecto de Firebase. A continuación, selecciona Cloud Messaging en Settings y copia la clave de servidor y el ID de remitente:
Configuración de Cloud Messaging en la consola de Firebase mostrando la clave de servidor y el ID de remitente.

En Braze, selecciona tu aplicación Android en la página App Settings dentro de Manage Settings. A continuación, introduce tu clave de servidor de Firebase en el campo Firebase Cloud Messaging Server Key y el ID de remitente de Firebase en el campo Firebase Cloud Messaging Sender ID.

Página de configuración de la aplicación Android de Braze con los campos de clave de servidor y ID de remitente de Firebase Cloud Messaging.

Paso 1.1: Verificar el método de integración

Braze proporciona una solución nativa de Unity para automatizar las integraciones push en iOS. Si prefieres configurar y gestionar tu integración manualmente, consulta Swift: Notificaciones push.

De lo contrario, continúa con el siguiente paso.

Paso 1.1: Habilitar ADM

  1. Crea una cuenta en el portal de desarrolladores de Amazon Apps & Games si aún no lo has hecho.
  2. Obtén las credenciales OAuth (ID de cliente y secreto de cliente) y una clave de API de ADM.
  3. Habilita Automatic ADM Registration Enabled en la ventana de configuración de Unity Braze.
    • Alternativamente, puedes añadir la siguiente línea a tu archivo res/values/braze.xml para habilitar el registro de ADM:
  <bool name="com_braze_push_adm_messaging_registration_enabled">true</bool>

Paso 2: Configurar notificaciones push

Paso 2.1: Configurar los ajustes push

El SDK de Braze puede gestionar automáticamente el registro push con los servidores de Firebase Cloud Messaging para que los dispositivos reciban notificaciones push. En Unity, habilita Automate Unity Android Integration y luego configura los siguientes ajustes de Push Notification.

Ajuste Descripción
Automatic Firebase Cloud Messaging Registration Enabled Indica al SDK de Braze que obtenga y envíe automáticamente un token push de FCM para un dispositivo.
Firebase Cloud Messaging Sender ID El ID de remitente de tu consola de Firebase.
Handle Push Deeplinks Automatically Si el SDK debe gestionar la apertura de vínculos profundos o de la aplicación cuando se hace clic en las notificaciones push.
Small Notification Icon Drawable Referencia del recurso drawable de Android para el icono pequeño que se muestra cuando llega una notificación push. Introduce la referencia completa incluyendo el prefijo @drawable/ (por ejemplo, @drawable/hourglass_icon). La integración automatizada escribe este valor en braze.xml tal como se introduce. Si dejas este campo vacío, la notificación usa el icono de la aplicación como icono pequeño.
Large Notification Icon Drawable Icono grande opcional para las notificaciones. Usa el mismo formato @drawable/ que el icono pequeño (por ejemplo, @drawable/my_large_icon).

Paso 2.1: Cargar tu token de APNs

Antes de que puedas enviar una notificación push de iOS utilizando Braze, tienes que cargar tu archivo de notificación push .p8, como se describe en la documentación para desarrolladores de Apple:

  1. En tu cuenta de desarrollador de Apple, ve a Certificates, Identifiers & Profiles.
  2. En Keys, selecciona All y haz clic en el botón de añadir (+) en la parte superior de la página.
  3. En Key Description, introduce un nombre único para la clave de firma.
  4. En Key Services, selecciona la casilla Apple Push Notification service (APNs) y, a continuación, haz clic en Continue. Haz clic en Confirm.
  5. Anota el ID de la clave. Haz clic en Download para generar y descargar la clave. Asegúrate de guardar el archivo descargado en un lugar seguro, ya que no puedes descargarlo más de una vez.
  6. En Braze, ve a Configuración > Configuración de la aplicación y carga el archivo .p8 en Apple Push Certificate. Puedes cargar tu certificado push de desarrollo o de producción. Para probar las notificaciones push después de que tu aplicación esté en vivo en la App Store, se recomienda configurar un espacio de trabajo separado para la versión de desarrollo de tu aplicación.
  7. Cuando se te solicite, introduce el ID del paquete, el ID de la clave y el ID del equipo de tu aplicación. También tendrás que especificar si quieres enviar notificaciones al entorno de desarrollo o de producción de tu aplicación, que se define por su perfil de aprovisionamiento.
  8. Cuando hayas terminado, selecciona Guardar.

Paso 2.2: Habilitar push automático

Abre los ajustes de configuración de Braze en el editor de Unity navegando a Braze > Braze Configuration.

Marca Integrate Push With Braze para registrar automáticamente a los usuarios en las notificaciones push, pasar tokens push a Braze, hacer seguimiento de análisis de aperturas push y aprovechar nuestra gestión predeterminada de notificaciones push.

Paso 2.3: Habilitar push en segundo plano (opcional)

Marca Enable Background Push si quieres habilitar el background mode para las notificaciones push. Esto permite que el sistema despierte tu aplicación del estado suspended cuando llega una notificación push, permitiendo que tu aplicación descargue contenido en respuesta a las notificaciones push. Marcar esta opción es necesario para nuestra funcionalidad de Uninstall Tracking.

El editor de Unity muestra las opciones de configuración de Braze. En este editor, están habilitadas las opciones "Automate Unity iOS integration", "Integrate push with braze" y "Enable background push".

Paso 2.4: Desactivar el registro automático (opcional)

Los usuarios que aún no hayan dado su consentimiento para las notificaciones push serán autorizados automáticamente al abrir tu aplicación. Para desactivar esta característica y registrar manualmente a los usuarios para push, marca Disable Automatic Push Registration.

  • Si Disable Provisional Authorization no está marcada en iOS 12 o posterior, el usuario será autorizado provisionalmente (silenciosamente) para recibir notificaciones push silenciosas. Si está marcada, se mostrará al usuario la solicitud push nativa.
  • Si necesitas configurar exactamente cuándo se muestra la solicitud en tiempo de ejecución, desactiva el registro automático desde el editor de configuración de Braze y usa AppboyBinding.PromptUserForPushPermissions() en su lugar.

El editor de Unity muestra las opciones de configuración de Braze. En este editor, están habilitadas las opciones "Automate Unity iOS integration", "integrate push with braze" y "disable automatic push registration".

Paso 2.1: Actualizar AndroidManifest.xml

Si tu aplicación no tiene un AndroidManifest.xml, puedes usar el siguiente como plantilla. De lo contrario, si ya tienes un AndroidManifest.xml, asegúrate de que cualquiera de las secciones faltantes a continuación se añada a tu AndroidManifest.xml existente.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="REPLACE_WITH_YOUR_PACKAGE_NAME">

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.INTERNET" />
  <permission
    android:name="REPLACE_WITH_YOUR_PACKAGE_NAME.permission.RECEIVE_ADM_MESSAGE"
    android:protectionLevel="signature" />
  <uses-permission android:name="REPLACE_WITH_YOUR_PACKAGE_NAME.permission.RECEIVE_ADM_MESSAGE" />
  <uses-permission android:name="com.amazon.device.messaging.permission.RECEIVE" />

  <application android:icon="@drawable/app_icon"
               android:label="@string/app_name">

    <!-- Calls the necessary Braze methods to ensure that analytics are collected and that push notifications are properly forwarded to the Unity application. -->
    <activity android:name="com.braze.unity.BrazeUnityPlayerActivity"
      android:label="@string/app_name"
      android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
      android:screenOrientation="sensor">
      <meta-data android:name="android.app.lib_name" android:value="unity" />
      <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

    <receiver android:name="com.braze.push.BrazeAmazonDeviceMessagingReceiver" android:permission="com.amazon.device.messaging.permission.SEND">
      <intent-filter>
          <action android:name="com.amazon.device.messaging.intent.RECEIVE" />
          <action android:name="com.amazon.device.messaging.intent.REGISTRATION" />
          <category android:name="REPLACE_WITH_YOUR_PACKAGE_NAME" />
      </intent-filter>
    </receiver>
  </application>
</manifest>

Paso 2.2: Almacenar tu clave de API de ADM

Primero, genera una clave de API de ADM para tu aplicación, luego guarda la clave en un archivo llamado api_key.txt y añádelo en el directorio Assets/ de tu proyecto.

A continuación, en tu archivo mainTemplate.gradle, añade lo siguiente:

task copyAmazon(type: Copy) {
    def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
    from unityProjectPath + '/Assets/api_key.txt'
    into new File(projectDir, 'src/main/assets')
}

preBuild.dependsOn(copyAmazon)

Paso 2.3: Añadir el JAR de ADM

El archivo JAR de ADM requerido puede colocarse en cualquier lugar de tu proyecto según la documentación de JAR de Unity.

Paso 2.4: Añadir el secreto de cliente y el ID de cliente a tu panel de Braze

Por último, debes añadir el secreto de cliente y el ID de cliente que obtuviste en el paso 1 a la página Manage Settings del panel de Braze.

Página de configuración de la aplicación Fire OS de Braze con los campos de ID de cliente y secreto de cliente de ADM.

Paso 3: Configurar listeners push

Paso 3.1: Habilitar el listener de push recibido

El listener de push recibido se activa cuando un usuario recibe una notificación push. Para enviar la carga útil push a Unity, establece el nombre de tu objeto del juego y el método de devolución de llamada del listener de push recibido en Set Push Received Listener.

Paso 3.2: Habilitar el listener de push abierto

El listener de push abierto se activa cuando un usuario abre la aplicación haciendo clic en una notificación push. Para enviar la carga útil push a Unity, establece el nombre de tu objeto del juego y el método de devolución de llamada del listener de push abierto en Set Push Opened Listener.

Paso 3.3: Habilitar el listener de push eliminado

El listener de push eliminado se activa cuando un usuario desliza o descarta una notificación push. Para enviar la carga útil push a Unity, establece el nombre de tu objeto del juego y el método de devolución de llamada del listener de push eliminado en Set Push Deleted Listener.

Ejemplo de listener push

El siguiente ejemplo implementa el objeto del juego BrazeCallback usando un nombre de método de devolución de llamada de PushNotificationReceivedCallback, PushNotificationOpenedCallback y PushNotificationDeletedCallback respectivamente.

Este gráfico de ejemplo de implementación muestra las opciones de configuración de Braze mencionadas en las secciones anteriores y un fragmento de código C#.

public class MainMenu : MonoBehaviour {
  void PushNotificationReceivedCallback(string message) {
#if UNITY_ANDROID
    Debug.Log("PushNotificationReceivedCallback message: " + message);
    PushNotification pushNotification = new PushNotification(message);
    Debug.Log("Push Notification received: " + pushNotification);
#elif UNITY_IOS
    ApplePushNotification pushNotification = new ApplePushNotification(message);
    Debug.Log("Push received Notification event: " + pushNotification);
#endif
  }

  void PushNotificationOpenedCallback(string message) {
#if UNITY_ANDROID
    Debug.Log("PushNotificationOpenedCallback message: " + message);
    PushNotification pushNotification = new PushNotification(message);
    Debug.Log("Push Notification opened: " + pushNotification);
#elif UNITY_IOS
    ApplePushNotification pushNotification = new ApplePushNotification(message);
    Debug.Log("Push opened Notification event: " + pushNotification);
#endif
  }

  void PushNotificationDeletedCallback(string message) {
#if UNITY_ANDROID
    Debug.Log("PushNotificationDeletedCallback message: " + message);
    PushNotification pushNotification = new PushNotification(message);
    Debug.Log("Push Notification dismissed: " + pushNotification);
#endif
  }
}

Paso 3.1: Habilitar el listener de push recibido

El listener de push recibido se activa cuando un usuario recibe una notificación push mientras usa activamente la aplicación (por ejemplo, cuando la aplicación está en primer plano). Configura el listener de push recibido en el editor de configuración de Braze. Si necesitas configurar tu listener del objeto del juego en tiempo de ejecución, usa AppboyBinding.ConfigureListener() y especifica BrazeUnityMessageType.PUSH_RECEIVED.

El editor de Unity muestra las opciones de configuración de Braze. En este editor, la opción "Set Push Received Listener" está expandida, y se proporcionan el "Game Object Name" (AppBoyCallback) y el "Callback Method Name" (PushNotificationReceivedCallback).

Paso 3.2: Habilitar el listener de push abierto

El listener de push abierto se activa cuando un usuario abre la aplicación haciendo clic en una notificación push. Para enviar la carga útil push a Unity, establece el nombre de tu objeto del juego y el método de devolución de llamada del listener de push abierto en la opción Set Push Opened Listener:

El editor de Unity muestra las opciones de configuración de Braze. En este editor, la opción "Set Push Received Listener" está expandida, y se proporcionan el "Game Object Name" (AppBoyCallback) y el "Callback Method Name" (PushNotificationOpenedCallback).

Si necesitas configurar tu listener del objeto del juego en tiempo de ejecución, usa AppboyBinding.ConfigureListener() y especifica BrazeUnityMessageType.PUSH_OPENED.

Ejemplo de listener push

El siguiente ejemplo implementa el objeto del juego AppboyCallback usando un nombre de método de devolución de llamada de PushNotificationReceivedCallback y PushNotificationOpenedCallback, respectivamente.

Este gráfico de ejemplo de implementación muestra las opciones de configuración de Braze mencionadas en las secciones anteriores y un fragmento de código C#.

public class MainMenu : MonoBehaviour {
  void PushNotificationReceivedCallback(string message) {
#if UNITY_ANDROID
    Debug.Log("PushNotificationReceivedCallback message: " + message);
    PushNotification pushNotification = new PushNotification(message);
    Debug.Log("Push Notification received: " + pushNotification);
#elif UNITY_IOS
    ApplePushNotification pushNotification = new ApplePushNotification(message);
    Debug.Log("Push received Notification event: " + pushNotification);
#endif
  }

  void PushNotificationOpenedCallback(string message) {
#if UNITY_ANDROID
    Debug.Log("PushNotificationOpenedCallback message: " + message);
    PushNotification pushNotification = new PushNotification(message);
    Debug.Log("Push Notification opened: " + pushNotification);
#elif UNITY_IOS
    ApplePushNotification pushNotification = new ApplePushNotification(message);
    Debug.Log("Push opened Notification event: " + pushNotification);
#endif
  }
}

Al actualizar tu AndroidManifest.xml en el paso anterior, los listeners push se configuraron automáticamente cuando añadiste las siguientes líneas. Por lo tanto, no se requiere ninguna configuración adicional.

<action android:name="com.amazon.device.messaging.intent.RECEIVE" />
<action android:name="com.amazon.device.messaging.intent.REGISTRATION" />

Configuraciones opcionales

Vinculación en profundidad a recursos dentro de la aplicación

Aunque Braze puede gestionar vínculos profundos estándar (como URL de sitios web, URI de Android, etc.) de forma predeterminada, la creación de vínculos profundos personalizados requiere una configuración adicional del Manifest.

Para obtener orientación sobre la configuración, visita Deep Linking to In-App Resources.

Añadir iconos de notificaciones push de Braze

Para añadir iconos push a tu proyecto, crea un complemento AAR o una biblioteca de Android que contenga los archivos de imagen de iconos en res/drawable* (o carpetas específicas de densidad) y luego haz referencia a cada icono en Braze > Braze Configuration usando el nombre completo del recurso @drawable/ (consulta el Paso 2.1: Configurar los ajustes push). Para los pasos de empaquetado e importación en Unity, consulta Android Library Projects and Android Archive plug-ins.

Para las reglas de diseño de iconos pequeños (solo alfa, sin color), consulta Notificaciones push de Android, Paso 2: Ajustar los iconos pequeños a las directrices de diseño.

Devolución de llamada del token push

Para recibir una copia de los tokens de dispositivo de Braze del sistema operativo, establece un delegado usando AppboyBinding.SetPushTokenReceivedFromSystemDelegate().

No hay configuraciones opcionales para ADM en este momento.

Requisitos previos

Antes de poder utilizar esta característica, deberás integrar el SDK .NET MAUI de Braze.

Configurar las notificaciones push

Para integrar notificaciones push en .NET MAUI (anteriormente Xamarin), tendrás que completar los pasos para las notificaciones push nativas de Android. Los siguientes pasos son solo un resumen. Para una guía completa, consulta la guía de notificaciones push nativas.

Paso 1: Actualiza tu proyecto

  1. Añade Firebase a tu proyecto de Android.
  2. Añade la biblioteca de Cloud Messaging al build.gradle de tu proyecto de Android:
      implementation "google.firebase:firebase-messaging:+"
    

Paso 2: Crea tus credenciales JSON

  1. En Google Cloud, habilita la API de Firebase Cloud Messaging.
  2. Selecciona Service Accounts > tu proyecto > Create Service Account y, a continuación, introduce un nombre, un ID y una descripción para la cuenta de servicio. Cuando hayas terminado, selecciona Create and continue.
  3. En el campo Role, busca y selecciona Firebase Cloud Messaging API Admin en la lista de roles.
  4. En Service Accounts, elige tu proyecto y, a continuación, selecciona  Actions > Manage Keys > Add Key > Create new key. Elige JSON y, a continuación, selecciona Create.

Paso 3: Sube tus credenciales JSON

  1. En Braze, selecciona  Configuración > Configuración de la aplicación. En la sección Push Notification Settings de tu aplicación Android, elige Firebase y, a continuación, selecciona Upload JSON File y sube las credenciales que generaste anteriormente. Cuando hayas terminado, selecciona Save.
  2. Habilita el registro automático de tokens FCM accediendo a Firebase Console. Abre tu proyecto y, a continuación, selecciona  Settings > Project settings. Selecciona Cloud Messaging y, en Firebase Cloud Messaging API (V1), copia el número del campo Sender ID.
  3. En tu proyecto de Android Studio, añade lo siguiente a tu braze.xml.
  <bool translatable="false" name="com_braze_firebase_cloud_messaging_registration_enabled">true</bool>
  <string translatable="false" name="com_braze_firebase_cloud_messaging_sender_id">FIREBASE_SENDER_ID</string>

Paso 1: Completa la configuración inicial

Consulta las instrucciones de integración de Swift para obtener información sobre cómo configurar tu aplicación con push y almacenar tus credenciales en nuestro servidor. Consulta la aplicación de ejemplo iOS MAUI para más detalles.

Paso 2: Solicita permiso para notificaciones push

Nuestro SDK de .NET MAUI ahora es compatible con la configuración automática de push. Configura la automatización y los permisos de push añadiendo el siguiente código a la configuración de tu instancia de Braze:

configuration.Push.Automation = new BRZConfigurationPushAutomation(true);
configuration.Push.Automation.RequestAuthorizationAtLaunch = false;

Consulta la aplicación de ejemplo iOS MAUI para más detalles. Para más información, consulta la documentación de Xamarin sobre notificaciones de usuario mejoradas en Xamarin.iOS.

New Stuff!