Skip to content

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 de Web Braze.

Protocolos push

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

Configuración de 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 a 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 se admite push en su navegador, llama a braze.isPushSupported().

También puedes enviar un aviso 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 Braze llamará automáticamente a skipWaiting al instalarlo. Si quieres desactivar esta funcionalidad, añade el siguiente código a tu archivo de prestador de servicios, después de importar Braze:

Cancelar suscripción de un usuario

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

Dominios alternativos

Para integrar el push web, tu dominio debe ser seguro, lo que generalmente significa https, localhost y otras excepciones definidas en el estándar push del W3C. 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 Braze Web Push en un dominio alternativo.

Ejemplos

Si no puedes cumplir todos los criterios descritos en el estándar push del W3C, puedes utilizar este método para añadir un cuadro de diálogo push a tu sitio web. Esto puede ser útil si quieres que tus usuarios se adhieran voluntariamente desde un sitio web http o desde una ventana emergente de una extensión del navegador que impide que se muestre tu mensaje push.

Consideraciones

Ten en cuenta que, al igual que muchas soluciones 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 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 coinciden con el perfil correcto.

Configurar un dominio push alternativo

Para que el siguiente ejemplo quede claro, utilizaremos http://insecure.com y https://secure.com como nuestros dos dominios con el objetivo de conseguir 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 del navegador.

Paso 1: Iniciar flujo de avisos

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

http://insecure.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<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: Registro para push

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

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

Paso 3: Comunicarse entre dominios (opcional)

Ahora que los usuarios pueden adherirse voluntariamente desde este flujo de trabajo originado en insecure.com, puede que quieras modificar tu sitio en función de si el usuario ya está adherido o no. No tiene sentido pedir al usuario que se registre en push si ya lo está.

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

insecure.com

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- 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 más frecuentes (FAQ)

Prestadores de servicios

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

Por defecto, un prestador de servicios sólo 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, sólo sería posible registrarlo en example.com/assets/* o en 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, una alternativa es utilizar el encabezado HTTP Service-Worker-Allowed al servir el archivo de tu prestador de servicios. Configurando tu servidor para que devuelva Service-Worker-Allowed: / en la respuesta para el prestador de servicios, esto indicará al navegador que amplíe el alcance y permita utilizarlo desde un directorio diferente.

¿Puedo crear un prestador de servicios utilizando un administrador de etiquetas?

No, los prestadores de servicios deben estar alojados en el servidor de tu sitio web y no pueden cargarse a través del administrador de etiquetas.

Seguridad del sitio

¿Se requiere HTTPS?

Sí. Las normas web exigen que el dominio que solicita el permiso de notificación push sea seguro.

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

Un sitio se considera seguro si coincide con uno de los siguientes patrones de origen seguro. Las notificaciones push de la Web Braze se basan en esta norma abierta, por lo que se evitan los ataques de intermediario.

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

¿Qué pasa si no está disponible 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 eludir el requisito utilizando un modal seguro. Lee más en nuestra guía sobre el uso de Dominio push alternativo o ve una demostración en funcionamiento.

Requisitos previos

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

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, deberás configurar las notificaciones push para tu aplicación.

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

Configuración de notificaciones push

Límites de tarifa

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 volverá a intentar automáticamente en unos minutos. Para solicitar un aumento, ponte en contacto con el servicio de asistencia de Firebase.

Paso 1: Añade Firebase a tu proyecto

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

Paso 2: Añade Mensajería en la Nube 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 añade la siguiente línea a tu bloque dependencies.

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

Tus dependencias deben tener un aspecto similar al siguiente:

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

Paso 3: Habilitar la API de mensajería en la nube de Firebase

En Google Cloud, selecciona el proyecto que utiliza tu aplicación Android y, a continuación, habilita la API de mensajería de Firebase Cloud.

API de mensajería en la nube de Firebase 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 (Cuentas de servicio) y elige tu proyecto. En la página Cuentas de servicio, selecciona Crear cuenta de servicio.

Página de inicio de la cuenta de servicio de un proyecto con la opción «Crear cuenta de servicio» resaltada.

Introduce un nombre de cuenta de servicio, un ID y una descripción, luego selecciona Crear y continuar.

El formulario para «Detalles de la cuenta de servicio».

En el campo Rol, busca y selecciona Administrador de la API de mensajería en la nube de Firebase en la lista de roles. Para un acceso más restrictivo, crea un rol personalizado con el permiso cloudmessaging.messages.create y, en su lugar, elígelo de la lista. Cuando hayas terminado, selecciona Hecho.

El formulario «Conceder acceso a esta cuenta de servicio al proyecto» con «Administrador de la API de Firebase Cloud Messaging» seleccionado como función.

Paso 5: Generar credenciales JSON

A continuación, genera las credenciales JSON de tu cuenta del servicio FCM. En Google Cloud IAM&Admin, ve a Cuentas de servicio y selecciona tu proyecto. Localiza la cuenta de servicio FCM que creaste anteriormente y, a continuación, selecciona Acciones > Gestionar claves.

Página de inicio de la cuenta de servicio del proyecto con el menú «Acciones» abierto.

Selecciona Añadir clave > Crear nueva clave.

La cuenta de servicio seleccionada con el menú «Añadir clave» abierto.

Elige JSON y selecciona Crear. Si creaste tu cuenta de servicio utilizando un ID de proyecto de Google Cloud distinto del 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: Sube tus credenciales JSON a Braze

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

El menú «Configuración» se abre en Braze con «Configuración de la aplicación» resaltado.

En la configuración de notificaciones push de tu aplicación Android, elige Firebase, luego selecciona Cargar archivo JSON y carga las credenciales que generaste anteriormente. Cuando haya terminado, seleccione Guardar.

El formulario «Configuración de notificaciones push» con «Firebase» seleccionado como proveedor de notificaciones push.

Paso 7: Configurar el registro automático de tokens

Cuando uno de tus usuarios opta por recibir 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 del token FCM para cada dispositivo de usuario en los archivos de configuración Braze de tu proyecto.

Primero, ve a la Consola Firebase, abre tu proyecto y selecciona Configuración > Configuración del proyecto.

El proyecto Firebase con el menú «Configuración» abierto.

Selecciona Mensajería en la nube y, a continuación, en API de mensajería en la nube de Firebase (V1), copia el número en el campo ID del remitente.

La página «Mensajería» del proyecto Firebase con el «ID del remitente» resaltado.

A continuación, abre tu proyecto de Android Studio y utiliza tu ID de remitente de Firebase para habilitar el registro automático del token de FCM en 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:

1
2
<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 Firebase. Tu braze.xml debe tener un aspecto similar al siguiente:

1
2
3
4
5
6
<?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:

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

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

1
2
3
4
5
6
7
8
9
10
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);
1
2
3
4
5
6
7
8
9
10
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)

Paso 8: Elimina 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 de Android: Aplicación.

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 la que mejor se adapte a tus necesidades específicas.

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

1
2
3
4
5
6
<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 las acciones de apertura y clic. Este servicio debe estar registrado en AndroidManifest.xml para funcionar correctamente. Además, recuerda que Braze antepone una clave única a las notificaciones procedentes de nuestro sistema, de modo que sólo reproduzcamos las notificaciones enviadas desde nuestros sistemas. Puedes registrar servicios adicionales por separado para recibir notificaciones enviadas desde otros servicios de FCM. ConsultaAndroidManifest.xml en la aplicación de ejemplo de Firebase Push.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MyFirebaseMessagingService extends FirebaseMessagingService {
  @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.
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
class MyFirebaseMessagingService : FirebaseMessagingService() {
  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 te gustaría utilizar, también puedes especificar un servicio de mensajería Firebase alternativo al que llamar si tu aplicación recibe un push que no procede de Braze.

En tu braze.xml, especifica:

1
2
<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 mediante la configuración en tiempo de ejecución:

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

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

Para obtener información general sobre los iconos de notificación de Android, visita el resumen de Notificaciones.

A partir de Android N, debes actualizar o eliminar los activos de los iconos de notificación pequeños que impliquen 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 en el icono pequeño de notificación. En otras palabras, Android convertirá todas las partes de tu pequeño icono de notificación en monocromo, excepto las regiones transparentes.

Para crear un pequeño activo 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 íconos grandes y pequeños son ejemplos de íconos correctamente diseñados:

Un pequeño icono que aparece en la esquina inferior de un icono grande junto a un mensaje que dice "Oye, voy de camino al bar, pero...".

Paso 3: Configurar iconos de notificación

Especificar íconos en braze.xml

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

1
2
<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 necesario configurar un pequeño icono de notificación. Si no estableces ninguno, Braze utilizará por defecto el icono de la aplicación como icono pequeño de notificación, lo que puede parecer poco óptimo.

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

Especificar el color de acento del icono

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

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

También puedes utilizar opcionalmente una referencia de color:

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

Paso 4: Añadir vínculos profundos

Habilitación de la apertura automática de vínculos profundos

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

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

Esta bandera también se puede establecer mediante la configuración en tiempo de ejecución:

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

Si quieres gestionar de forma personalizada los vínculos profundos, tendrás que crear una devolución de llamada push que escuche las intenciones push recibidas y abiertas de Braze. Para obtener más información, consulta Uso de una devolución de llamada para eventos push.

Manejo de notificaciones en primer plano

De forma predeterminada, cuando llega una notificación push mientras la 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), envía los datos push entrantes a Braze dentro de tuFirebaseMessagingService.onMessageReceivedmétodo.

Cómo funciona

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 obtener más información, consulta el ejemplo de integración de Firebase en el repositorio del SDK de Braze para Android.

Personalización del comportamiento en primer plano

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

  • UtilizasubscribeToPushNotificationEvents para reaccionar ante eventos push y gestionar vínculos profundos con elBrazeNotificationUtils.routeUserWithNotificationOpenedIntentmétodo . Para obtener más información, consulta el ejemplo de notificaciones push de Firebase.
  • Crea y publica tu propia notificación utilizando una personalizadaIBrazeNotificationFactory, o suprime la notificación sin llamarnotificationManager.notifya en tu ruta de gestión.

Para obtener más información sobre cómo personalizar las notificaciones personalizadas, consulta Fábrica de notificaciones personalizadas.

Crear vínculos profundos personalizados

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

Añadir vínculos profundos

El panel de Braze admite la configuración de vínculos profundos o URL de Web en campañas de notificaciones push y Lienzos que se abrirán cuando se haga clic en la notificación.

La configuración «Comportamiento al hacer clic» en el panel de Braze con «Vínculo profundo a la aplicación» seleccionado en el menú desplegable.

Personalizar el comportamiento de la pila de actividades

El SDK de Android, de forma predeterminada, colocará la actividad principal iniciadora de tu aplicación anfitriona en la pila de actividades cuando se sigan vínculos profundos push. Braze te permite configurar una actividad personalizada para que se abra en la pila de actividades en lugar de tu actividad principal iniciadora o desactivar por completo la pila de actividades.

Por ejemplo, para establecer una actividad llamada YourMainActivity como actividad de la pila trasera mediante la configuración en tiempo de ejecución:

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

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

1
2
<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 para Android de Braze es compatible con los canales de notificación de Android. Si una notificación Braze no contiene el ID de un canal de notificación o que una notificación 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 las notificaciones.

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

Para configurar la descripción orientada al usuario del canal de notificación predeterminado de Braze, utiliza BrazeConfig.setDefaultNotificationChannelDescription().

Actualiza cualquier campaña de la API con el parámetro de objeto push de Android para incluir el campo notification_channel. Si no se especifica este campo, 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 mediante programación por la aplicación anfitriona y luego introducidos en el panel de Braze.

El nombre y la descripción predeterminados del canal también se pueden configurar en braze.xml.

1
2
<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: Visualización y análisis de las notificaciones de las pruebas

Pantalla de pruebas

En este punto, deberías poder ver las notificaciones enviadas desde Braze. Para probarlo, ve a la página Campañas de tu panel de Braze y crea una campaña de Notificación push. Elige Android Push y diseña tu mensaje. A continuación, haz clic en el icono del ojo en el compositor para obtener el remitente de la prueba. Introduce el ID de usuario o la dirección de correo electrónico de tu usuario actual y haz clic en Enviar prueba. Deberías ver aparecer el push en tu dispositivo.

La pestaña «Prueba» de una campaña de notificaciones push en el panel de Braze.

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

Análisis de pruebas

En este punto, también deberías tener un registro de análisis de las aperturas de notificaciones push. Si haces clic en la notificación cuando llegue, las Direct Opens de la página de resultados de tu campaña aumentarán en 1. Consulta nuestro artículo sobre los informes push para obtener más información sobre los análisis push.

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

Pruebas desde la línea de comandos

Si quieres probar las notificaciones dentro de la aplicación y las notificaciones push a través de la interfaz de 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 (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)
1
2
3
4
5
6
7
8
9
10
11
12
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 utiliza la instancia US-01. Si no estás en esta instancia, sustituye el punto final US-01 por tu punto final.

Notificaciones push de conversaciones

La iniciativa de personas y conversaciones es una iniciativa plurianual de Android que pretende elevar 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 de todos los grupos demográficos.

Requisitos de uso

  • Este tipo de notificación requiere la versión 15.0.0 en adelante del SDK de Braze para Android y dispositivos Android a partir de la versión 11.
  • Los dispositivos o SDK no compatibles recibirán como alternativa una notificación push estándar.

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

Errores por exceso de cuota FCM

Cuando se supera el límite de Firebase FCM, Google devuelve errores de «cuota excedida». El límite predeterminado para FCM es de 600.000 peticiones por minuto. Braze vuelve a intentar el envío según las prácticas recomendadas por Google. Sin embargo, un gran volumen de estos errores puede prolongar el tiempo de envío varios minutos. Para mitigar el posible impacto, Braze te enviará una alerta de que se está superando el límite de velocidad y las medidas que puedes tomar para evitar los errores.

Para consultar tu límite actual, ve a Google Cloud Console > Servicios de& API > API de Firebase FCM > Cuotas Límites& del sistema, o visita la página Cuotas de la API de FCM.

Buenas prácticas

Recomendamos estas prácticas recomendadas para mantener bajos estos volúmenes de error.

Solicitar un aumento del límite de velocidad a FCM

Para solicitar un aumento del límite de velocidad a FCM, puedes ponerte en contacto directamente con el servicio de asistencia de Firebase o seguir estos pasos:

  1. Ve a la página Cuotas de la API de FCM.
  2. La ubicación de la cuota de solicitudes enviadas por minuto.
  3. Selecciona Editar cuota.
  4. Introduce un nuevo valor y envía tu solicitud.

Solicita el límite de velocidad para las tasas globales a través de Braze.

Para aplicar un límite en todo el espacio de trabajo para las notificaciones push de Android, ponte en contacto con el soporte de Braze.

Límites de tarifa

Las notificaciones push tienen una tasa limitada, así que no tengas miedo de 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 estranguladas, 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.

Configuración de notificaciones push

Paso 1: Sube tu token APN

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 Certificados, identificadores & Perfiles.
  2. En Claves, selecciona Todas y haz clic en el botón de añadir (+) de la esquina superior derecha.
  3. En Descripción de la clave, introduce un nombre único para la clave de firma.
  4. En Servicios clave, selecciona la casilla Servicio de notificaciones push de Apple (APN) y, a continuación, haz clic en Continuar. Haz clic en Confirmar.
  5. Nota el ID de la clave. Haz clic en Descargar 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 Certificado Apple Push. Puedes subir 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 el 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 llave 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 haya terminado, seleccione Guardar.

Paso 2: Habilitar las capacidades push

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

La sección «Capacidades de&firma» en un proyecto Xcode.

Paso 3: Configurar el manejo de notificaciones 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 de push en true:

1
2
let configuration = Braze.Configuration(apiKey: "{YOUR-BRAZE-API-KEY}", endpoint: "{YOUR-BRAZE-API-ENDPOINT}")
configuration.push.automation = true
1
2
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 lo siguiente:

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

Paso 3.2: Anular configuraciones individuales (opcional)

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

1
2
3
// Enable all automations and disable the automatic notification authorization request at launch.
configuration.push.automation = true
configuration.push.automation.requestAuthorizationAtLaunch = false
1
2
3
// 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 más información sobre el comportamiento de la automatización.

Paso 3.1: Registro para notificaciones push con APNs

Incluye el ejemplo de código apropiado en el método delegadoapplication:didFinishLaunchingWithOptions: de tu aplicación para que los dispositivos de tus usuarios puedan registrarse con las APN. Asegúrate de que llamas 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 el soporte del botón de acción push, que deben añadirse manualmente a tu código de registro push. Consulta los botones de acción para notificación push para conocer los pasos adicionales de la integración.

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

1
2
3
4
5
6
7
8
9
10
11
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))")
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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: Registrar tokens de notificaciones push con Braze

Una vez completado el registro de APN, 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:

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

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

1
[AppDelegate.braze.notifications registerDeviceToken:deviceToken];

Paso 3.3: Habilitar la gestión push

A continuación, pasa las notificaciones push recibidas a Braze. Este paso es necesario para registrar los análisis push y la gestión de enlaces. Asegúrate de que llamas a todo el código de integración push en el hilo principal de tu aplicación.

Manejo predeterminado de las notificaciones push

Para habilitar el manejo predeterminado de notificaciones push de Braze, agrega el siguiente código al método application(_:didReceiveRemoteNotification:fetchCompletionHandler:)de tu aplicación:

1
2
3
4
5
6
7
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:

1
2
3
4
5
6
7
if let braze = AppDelegate.braze, braze.notifications.handleUserNotification(
  response: response,
  withCompletionHandler: completionHandler
) {
  return
}
completionHandler()

Para habilitar el manejo predeterminado de notificaciones push de Braze, agrega el siguiente código al método application:didReceiveRemoteNotification:fetchCompletionHandler:de tu aplicación:

1
2
3
4
5
6
7
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:

1
2
3
4
5
6
7
BOOL processedByBraze = AppDelegate.braze != nil && [AppDelegate.braze.notifications handleUserNotificationWithResponse:response
                                                                                                  withCompletionHandler:completionHandler];
if (processedByBraze) {
  return;
}

completionHandler();
Manejo de las notificaciones push en primer plano

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 reciban, implementa userNotificationCenter:willPresentNotification:withCompletionHandler:. Si un usuario toca tu notificación en primer plano, se llamará al delegado push de userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: y Braze registrará el evento push click.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- (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);
  }
}

Notificaciones de pruebas

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é punto final debes hacer solicitudes.

1
2
3
4
5
6
7
8
9
10
11
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 las actualizaciones de las notificaciones push

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

Puedes utilizar el parámetro payloadTypes para especificar si quieres suscribirte a las notificaciones de eventos push abiertos, eventos push recibidos o ambos.

1
2
3
4
5
6
// 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)'")
}
1
2
3
4
5
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);
}];

Manejo de notificaciones en primer plano

De forma predeterminada, cuando llega una notificación push mientras la aplicación está en primer plano, iOS no la muestra automáticamente. Para mostrar notificaciones push en primer plano y realizar su seguimiento con Braze Análisis, llama alhandleForegroundNotification(notification:)método dentro de tuUNUserNotificationCenterDelegate.userNotificationCenter(_:willPresent:withCompletionHandler:)implementación.

Cómo funciona

Cuando llamashandleForegroundNotification(notification:), Braze procesa la carga útil de la notificación para registrar los análisis y gestionar cualquier vínculo profundo o acción de botón. El comportamiento real de la visualización está controlado por elUNNotificationPresentationOptions que pasas al controlador de finalización.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 la muestra de integración manual de notificaciones push en el repositorio Braze Swift SDK.

Push primers

Las campañas 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 primer push sin código.

Gestión dinámica de la puerta de enlace APN

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

Con la administración dinámica de la puerta de enlace APN, tendrás:

  • Mayor fiabilidad: Las notificaciones siempre se entregan al entorno APN correcto, lo que reduce los fallos en la entrega.
  • Configuración simplificada: Ya no es necesario administrar manualmente la configuración de la puerta de enlace APN.
  • Resistencia a los errores: Los valores de puerta de enlace no válidos o que faltan se gestionan correctamente, lo que garantiza un servicio ininterrumpido.

Requisitos previos

Braze admite la administración dinámica de puertas de enlace APN para notificaciones push en iOS con los siguientes requisitos 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, incluidosaps-environment a la API del SDK de Braze, si está disponible. Elapns_gatewayvalor indica si la aplicación utiliza el entorno APN de desarrollo (dev) o de producción (prod).

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

Cuando Braze envía una notificación push:

  • Si se almacena un valor de puerta de enlace válido (dev o prod) para el dispositivo, Braze lo utiliza para determinar el entorno APN correcto.
  • Si no se almacena ningún valor de puerta de enlace, Braze utiliza de forma predeterminada el entorno APN configurado en la página Configuración de la aplicación.

Preguntas más frecuentes

¿Por qué se introdujo esta característica?

Con la administración dinámica de la puerta de enlace APN, se selecciona automáticamente el entorno adecuado. Anteriormente, era necesario configurar manualmente la puerta de enlace APN, lo que podía provocarBadDeviceToken errores, la invalidación de tokens y posibles problemas de límite de velocidad de APN.

¿Cómo afecta esto al rendimiento de las entregas urgentes?

Esta característica mejora las tasas de entrega al dirigir siempre los tokens de notificaciones push al entorno APN correcto, evitando fallos causados por puertas de enlace mal configuradas.

¿Puedo desactivar esta característica?

La gestión dinámica de puertas de enlace APN está activada de forma predeterminada y proporciona mejoras en la fiabilidad. Si tienes casos de uso específicos que requieren la selección manual de la puerta de enlace, ponte en contacto con el soporte de Braze.

Acerca de las notificaciones push para Android TV

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

Requisitos previos

Para utilizar esta característica, tendrás que completar lo siguiente:

Configuración de las notificaciones push

Para configurar las notificaciones push para Android TV:

  1. Crea una vista personalizada en tu aplicación para mostrar tus notificaciones.
  2. Crea una fábrica de notificaciones personalizada. Esto anulará el comportamiento predeterminado del SDK y te permitirá mostrar manualmente las notificaciones. Una devolución de null impedirá que el SDK lo procese y requerirá código personalizado para mostrar la notificación. Una vez completados estos pasos, ¡ya puedes empezar a enviar push a Android TV!

  3. (Opcional) Para realizar un seguimiento eficaz del análisis de clics, configura el seguimiento del análisis de clics. Esto puede conseguirse creando una devolución de llamada push para escuchar las intenciones Braze push abiertas y recibidas.

Probar las notificaciones push de Android TV

Para probar si tu implementación push tiene éxito, envía una notificación desde el panel de Braze como harías normalmente para un dispositivo Android.

  • Si la aplicación está cerrada: El mensaje push mostrará una notificación push en la pantalla.
  • Si la aplicación está abierta: Tienes la oportunidad de mostrar el mensaje en tu propia interfaz de usuario alojada. Te recomendamos que sigas el estilo de la interfaz de usuario de nuestros mensajes dentro de la aplicación Android Mobile SDK.

Buenas prácticas

Para los especialistas en marketing que utilicen Braze, lanzar una campaña a Android TV será idéntico a lanzar un push a aplicaciones móviles de Android. Para dirigirte exclusivamente a estos dispositivos, te recomendamos que selecciones la aplicación Android TV en la segmentación.

La respuesta entregada y cliqueada devuelta por FCM seguirá la misma convención que un dispositivo móvil Android; por tanto, cualquier error será visible en el registro de actividad del mensaje.

Requisitos previos

Antes de poder utilizar esta característica, tendrás que integrar el SDK Braze de Cordova. Después de la integración del SDK, la funcionalidad básica de notificaciones push se habilita de forma predeterminada. Para utilizar notificaciones push enriquecidas e historias push, deberás configurarlas individualmente. Para utilizar los mensajes push de iOS, también debes cargar un certificado push válido.

Habilitar la vinculación en profundidad push

De forma predeterminada, el SDK de Braze 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 que se indican en Vinculación en profundidad. Para obtener más información sobre estas y otras opciones de configuración push, consulta Configuraciones opcionales.

Desactivar las notificaciones push básicas (solo iOS)

Después de la integración del SDK de Braze Cordova para iOS, la funcionalidad básica de notificaciones push se habilita de forma predeterminada. Para desactivar esta funcionalidad en tu aplicación iOS, añade lo siguiente a tuconfig.xmlarchivo. Para obtener más información, consulta Configuraciones opcionales.

1
2
3
4
<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 Braze.

Configuración de las notificaciones push

Paso 1: Completa la configuración inicial

Paso 1.1: Registro para push

Regístrate para recibir mensajes push mediante la API Firebase Cloud Messaging (FCM) de Google. Para una guía completa, consulta los siguientes pasos de la guía de integración push para Android nativo:

  1. Añade Firebase a tu proyecto.
  2. Añade Cloud Messaging a tus dependencias.
  3. Crea una cuenta de servicio.
  4. Generar credenciales JSON.
  5. Carga tus credenciales JSON en Braze.

Paso 1.2: Obtén tu ID de remitente de Google

Primero, ve a la Consola Firebase, abre tu proyecto y selecciona Configuración > Configuración del proyecto.

El proyecto Firebase con el menú "Configuración" abierto.

Selecciona Mensajería en la nube y, a continuación, en API de mensajería en la nube de Firebase (V1), copia el ID del remitente en el portapapeles.

La página "Mensajería en la nube" del proyecto Firebase con el "ID del remitente" resaltado.

Paso 1.3: Actualiza tu braze.xml

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

1
2
<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: Cargar certificados APN

Genera un certificado del servicio de notificaciones push de Apple (APN) y cárgalo en el panel de Braze. Para más información, consulta Cargar tu certificado de APN.

Paso 1.2: Añade notificaciones push a tu aplicación

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

Paso 2: Escuchar eventos de notificación push (opcional)

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

1
2
3
4
5
6
7
8
9
10
// 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 evento de notificación push

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

Paso 3: Prueba de visualización de notificaciones push

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

  1. Configura un usuario activo en la aplicación Flutter. Para ello, inicializa tu plugin llamando a braze.changeUser('your-user-id').
  2. Ve a Campañas y crea una nueva campaña de notificación push. Elige las plataformas que deseas probar.
  3. Redacta tu notificación de prueba y dirígete a la pestaña Prueba. Añade el mismo user-id que el usuario de prueba y haz clic en Enviar prueba.
  4. En breve recibirás la notificación en tu dispositivo. Puede que tengas que comprobarlo en el centro de notificaciones o actualizar la configuración si no se muestra.

Requisitos previos

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

Configuración de notificaciones push

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

Paso 1: Registro para 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 (Mis proyectos > Configuración del proyecto > Información de la aplicación), y toma nota de App ID y App secret.

Paso 2: Crea 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 Configuración.

Haz clic en + Añadir aplicación, ponle un nombre (como Mi aplicación Huawei) y selecciona Android como plataforma.

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

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

Huawei proporcionó un codelab de integración en Android en el que se detalla la integración del servicio de mensajería de Huawei en tu aplicación. Sigue estos pasos para empezar.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
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:

1
2
3
4
5
6
7
<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 la aplicación está en primer plano, Huawei 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), envía los datos push entrantes a Braze dentro de tuHmsMessageService.onMessageReceivedmétodo.

Cuando llamasBrazeHuaweiPushHandler.handleHmsRemoteMessageData, Braze determina si la carga útil es una notificación push de Braze y, si es así, crea y muestra la notificación. Para obtener más información, consulta Gestión de notificaciones en primer plano en la documentación sobre notificaciones push de Android.

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

Paso 5: Prueba tus notificaciones push (opcional)

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

A continuación, podemos poner a prueba la integración probando una nueva campaña push en Braze.

Paso 5.1: Crear una nueva campaña de notificación push

En la página Campañas, crea una nueva campaña y elige Notificación push como tipo de mensaje.

Después de nombrar tu campaña, elige Android Push como plataforma push.

El compositor de creación de campañas muestra las plataformas push disponibles.

A continuación, crea tu campaña push con un título y un mensaje.

Paso 5.2: Envía un push de prueba

En la pestaña Prueba, introduce tu ID de usuario, que habrás configurado en tu aplicación utilizando el métodochangeUser(USER_ID_STRING) , y haz clic en Enviar prueba para enviar un push de prueba.

La pestaña «Prueba» del compositor de creación de campañas te muestra que puedes enviarte un mensaje de prueba a ti mismo proporcionando tu ID de usuario e introduciéndolo en el campo «Añadir usuarios individuales».

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

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

Como tu aplicación de Huawei en el panel de Braze se basa en la plataforma push de Android, tienes la flexibilidad de enviar push a todos los usuarios de Android (Firebase Cloud Messaging y Huawei Mobile Services), o puedes elegir segmentar la audiencia de tu campaña en aplicaciones específicas.

Para enviar notificaciones push solo a aplicaciones Huawei, crea un nuevo segmento](/docs/es/user_guide/engagement_tools/segments/creating_a_segment/#step-3-choose-your-app-or-platform) y selecciona tu aplicación Huawei en la sección Aplicaciones.

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

Requisitos previos

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

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  Configuración > Configuración del proyecto.

El proyecto Firebase con el menú «Configuración» abierto.

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

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

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

1
"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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
  "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.

1
2
3
4
5
6
7
8
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.

1
2
3
4
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:

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 que se indican a continuación.

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:

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

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:

1
2
3
4
5
6
7
8
// 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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- (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];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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:

1
2
3
4
5
6
7
8
// 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 });
  }
});

Paso 3.3: Habilitar enlaces universales (opcional)

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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.

1
2
3
4
5
6
#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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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 aquí.

Paso 4: Gestionar las notificaciones en primer plano

El manejo 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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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 Campañas y crea una nueva campaña de notificación push. Elige las plataformas que deseas probar.
  3. Redacta tu notificación de prueba y dirígete a la pestaña Prueba. Añade el mismo user-id que el usuario de prueba y haz clic en Enviar prueba. En breve recibirás la notificación en tu dispositivo.

Una campaña 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 complemento Expo

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

Reenviar push de Android a FMS adicionales

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "expo": {
    "plugins": [
      [
        "@braze/expo-plugin",
        {
          ...
          "androidFirebaseMessagingFallbackServiceEnabled": true,
          "androidFirebaseMessagingFallbackServiceClasspath": "com.company.OurFirebaseMessagingService"
        }
      ]
    ]
  }
}

Utilizar 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 esté configurado tu proyecto para gestionar la firma de código con EAS.

Una forma de hacerlo es utilizar la configuración de appExtensions en tu archivo app.json siguiendo la documentación sobre extensiones de aplicación de Expo. Alternativamente, puedes configurar la opción multitarget en tu archivo credentials.json siguiendo la documentación sobre credenciales locales de Expo.

Solución de problemas

Estos son los pasos habituales para la solución de problemas relacionados con las integraciones de notificaciones push con el SDK de Braze para React Native y el complemento Expo.

Las notificaciones push han dejado de funcionar

Si las notificaciones push a través del complemento Expo han dejado de funcionar:

  1. Comprueba que el SDK de Braze sigue realizando el seguimiento de las sesiones.
  2. Comprueba que el SDK no se haya desactivado mediante una llamada explícita o implícita a wipeData.
  3. Revisa cualquier actualización reciente 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 anulando manualmente tus métodos delegados de notificaciones push existentes.

El token del dispositivo no se registra en Braze

Si el token de tu dispositivo no se registra en Braze, primero revisa Las notificaciones push han dejado de funcionar.

Si el problema persiste, es posible que haya una dependencia independiente que interfiera con la configuración de las notificaciones push de Braze. Puedes intentar eliminarla o llamar manualmente a Braze.registerPushToken en su lugar.

Requisitos previos

Antes de poder utilizar esta característica, tendrás que integrar el SDK de Web 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.

Configuración de Safari Push para dispositivos móviles

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 Conmutador de Aplicaciones, si se representa 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.

1
2
3
4
5
6
7
8
9
{
  "name": "your app name",
  "short_name": "your app name",
  "display": "fullscreen",
  "icons": [{
    "src": "favicon.ico",
    "sizes": "128x128",
  }]
}

La lista completa de campos admitidos se encuentra aquí.

Añade la siguiente etiqueta <link> al elemento <head> de tu sitio web, indicando dónde está alojado tu archivo de manifiesto.

1
<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 prestadores de servicios Braze, como se describe en nuestra guía de integración push web.

Paso 4: Añadir a la pantalla de inicio

Los navegadores web más populares (como Safari, Chrome, Firefox y Edge) admiten notificaciones push web en sus últimas versiones. Para solicitar permiso push en iOS o iPadOS, tu sitio web debe añadirse a la pantalla de inicio del usuario seleccionando Compartir en > Añadir a la pantalla de inicio. La opción «Añadir a la pantalla de inicio» permite a los usuarios marcar tu sitio web como favorito, añadiendo tu icono a su valiosa pantalla de inicio.

Un iPhone que muestra opciones para marcar un sitio web y guardarlo en la pantalla de inicio

Paso 5: Mostrar el mensaje push nativo

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

Una notificación push pidiendo "permitir" o "no permitir" Notificaciones

Por ejemplo:

1
2
3
4
5
6
7
8
9
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 utilizar nuestros mensajes push 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 Braze de Unity.

Configuración de la notificación 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: Configura tus credenciales de Firebase

Tienes que introducir tu clave de servidor Firebase y tu ID de remitente en el panel de Braze. Para ello, accede a la consola de desarrolladores de Firebase y selecciona tu proyecto Firebase. A continuación, selecciona Mensajería en la nube en Configuración y copia la clave del servidor y el ID del remitente:

En Braze, selecciona tu aplicación Android en la página Configuración de la aplicación, en Administrar configuración. A continuación, introduce tu clave de servidor de Firebase en el campo Clave de servidor de mensajería en la nube de Firebase y el ID de remitente de Firebase en el campo ID de remitente de mensajería en la nube de Firebase.

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

Braze proporciona una solución nativa de Unity para automatizar las integraciones push de iOS. Si prefieres configurar y administrar 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 del Desarrollador de Amazon Apps & Games si aún no lo has hecho.
  2. Obtén credenciales OAuth (ID de cliente y secreto de cliente) y una clave de API de ADM.
  3. Habilita el Registro Automático de ADM Habilitado 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:
1
  <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 mensajería en la nube de Firebase para que los dispositivos reciban notificaciones push. En Unity, habilita Automatizar integración Android de Unity y, a continuación, configura los siguientes ajustes de notificación push.

Paso 2.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 Certificados, identificadores & Perfiles.
  2. En Claves, selecciona Todas y haz clic en el botón de añadir (+) de la esquina superior derecha.
  3. En Descripción de la clave, introduce un nombre único para la clave de firma.
  4. En Servicios clave, selecciona la casilla Servicio de notificaciones push de Apple (APN) y, a continuación, haz clic en Continuar. Haz clic en Confirmar.
  5. Nota el ID de la clave. Haz clic en Descargar 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 Certificado Apple Push. Puedes subir 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 el 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 llave 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 haya terminado, seleccione Guardar.

Paso 2.2: Habilitar push automático

Abre los ajustes de configuración de Braze en el editor de Unity navegando hasta Braze > Configuración de Braze.

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

Paso 2.3: Habilitar push en segundo plano (opcional)

Marca Activar Push en segundo plano si quieres habilitar background mode para las notificaciones push. Esto permite al sistema despertar tu aplicación del estado suspended cuando llega una notificación push, habilitando tu aplicación para descargar contenido en respuesta a las notificaciones push. Marcar esta opción es necesario para nuestra funcionalidad de seguimiento de la desinstalación.

El editor de Unity muestra las opciones de configuración de Braze. En este editor están habilitadas las opciones "Automatizar la integración de Unity con iOS", "Integrar push con Braze" y "Habilitar push en segundo plano".

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

Los usuarios que aún no hayan optado por la adhesión voluntaria a las notificaciones push serán autorizados automáticamente a recibir notificaciones push al abrir tu aplicación. Para desactivar esta característica y registrar manualmente a los usuarios para push, marca Desactivar registro push automático.

  • Si la opción Desactivar autorización provisional no está marcada en iOS 12 o posterior, el usuario estará autorizado provisionalmente (de forma silenciosa) a recibir push silenciosos. Si está marcada, se mostrará al usuario el aviso push nativo.
  • Si necesitas configurar exactamente cuándo se muestra el aviso en tiempo de ejecución, desactiva el registro automático desde el editor de configuración de Braze y utiliza en su lugar AppboyBinding.PromptUserForPushPermissions().

El editor de Unity muestra las opciones de configuración de Braze. En este editor están habilitadas las opciones "Automatizar la integración de Unity en iOS", "Integrar push con Braze" y "Desactivar el registro push automático".

Paso 2.1: Actualiza AndroidManifest.xml

Si tu aplicación no tiene una dirección AndroidManifest.xml, puedes utilizar la siguiente plantilla. De lo contrario, si ya tienes un AndroidManifest.xml, asegúrate de que cualquiera de las siguientes secciones que faltan se añaden a tu AndroidManifest.xml existente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?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: Almacena tu clave de API de ADM

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

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

1
2
3
4
5
6
7
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 archivo jar de ADM

El archivo jar ADM necesario puede colocarse en cualquier lugar de tu proyecto de acuerdo con la documentación 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 Administrar configuración del panel de Braze.

Paso 3: Configurar escuchas push

Paso 3.1: Habilitar la escucha push recibida

El receptor de notificaciones push 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 receptor push en Establecer receptor push.

Paso 3.2: Habilitar la escucha abierta push

El receptor push abierto se activa cuando un usuario inicia la aplicación haciendo clic en una notificación push. Para enviar la carga útil de push a Unity, establece el nombre de tu objeto del juego y el método de devolución de llamada de escucha abierta push en Establecer escucha abierta push.

Paso 3.3: Habilitar la escucha push eliminada

El receptor de notificaciones push eliminadas se activa cuando un usuario elimina o rechaza una notificación push. Para enviar la carga útil de push a Unity, establece el nombre de tu objeto del juego y el método de devolución de llamada de escucha eliminada push en Establecer escucha eliminada push.

Ejemplo de receptor push

En el siguiente ejemplo se implementa el objeto del juego BrazeCallback utilizando 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 en C#.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 la escucha push recibida

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

El editor de Unity muestra las opciones de configuración de Braze. En este editor, se amplía la opción "Establecer receptor de recepción push" y se proporcionan el "Nombre del objeto del juego" (AppBoyCallback) y el "Nombre del método de devolución de llamada" (PushNotificationReceivedCallback).

Paso 3.2: Habilitar la escucha abierta push

El receptor push abierto se activa cuando un usuario inicia la aplicación haciendo clic en una notificación push. Para enviar la carga útil de push a Unity, establece el nombre de tu objeto del juego y el método de devolución de llamada de la escucha push abierta en la opción Establecer escucha push abierta:

El editor de Unity muestra las opciones de configuración de Braze. En este editor, se amplía la opción "Establecer receptor de recepción push" y se proporcionan el "Nombre del objeto del juego" (AppBoyCallback) y el "Nombre del método de devolución de llamada" (PushNotificationOpenedCallback).

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

Ejemplo de receptor push

El siguiente ejemplo implementa el objeto del juego AppboyCallback utilizando 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 en C#.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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, las escuchas push se configuraron automáticamente cuando añadiste las siguientes líneas. Por lo tanto, no es necesaria ninguna otra configuración.

1
2
<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 los recursos 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 Manifiesto.

Para obtener información sobre la configuración, visita Vinculación en profundidad con recursos de la aplicación.

Añadir iconos de notificación push Braze

Para añadir iconos push a tu proyecto, crea un plug-in Android Archive (AAR) o una biblioteca Android que contenga los archivos de imagen de los iconos. Para conocer los pasos y la información, consulta la documentación de Unity: Proyectos de bibliotecas Android y plug-ins de archivos Android.

Devolución de llamada de token de notificaciones push

Para recibir una copia de los tokens de dispositivo Braze del SO, establece un delegado mediante AppboyBinding.SetPushTokenReceivedFromSystemDelegate().

De momento no hay configuraciones opcionales para ADM.

Requisitos previos

Antes de poder utilizar esta característica, deberás realizar la integración del SDK .NET MAUI Braze.

Configuración de notificaciones push

Para la integración de las notificaciones push para .NET MAUI (antes Xamarin), deberás completar los pasos para las notificaciones push nativas de Android. Los pasos siguientes son sólo 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 Android.
  2. Añade la biblioteca de Mensajería en la nube a la página build.gradle de tu proyecto Android:
    1
    
      implementation "google.firebase:firebase-messaging:+"
    

Paso 2: Crea tus credenciales JSON

  1. En Google Cloud, habilita la API de Firebase Cloud Messaging.
  2. Selecciona Cuentas de servicio > tu proyecto > Crear cuenta de servicio, e introduce un nombre de cuenta de servicio, un ID y una descripción. Cuando hayas terminado, selecciona Crear y continuar.
  3. En el campo Rol, busca y selecciona Administrador de la API de mensajería en la nube de Firebase en la lista de roles.
  4. En Cuentas de servicio, elige tu proyecto y selecciona Acciones > Gestionar claves > Añadir clave > Crear nueva clave. Elige JSON y selecciona Crear.

Paso 3: Sube tus credenciales JSON

  1. En Braze, selecciona Configuración > Configuración de la aplicación . En la configuración de notificaciones push de tu aplicación Android, elige Firebase, luego selecciona Cargar archivo JSON y carga las credenciales que generaste anteriormente. Cuando hayas terminado, selecciona Guardar.
  2. Habilita el registro automático del token FCM, accediendo a la Consola Firebase. Abre tu proyecto y selecciona Configuración > Configuración del proyecto. Selecciona Mensajería en la nube y, a continuación, en API de mensajería en la nube de Firebase (V1), copia el número en el campo ID del remitente.
  3. En tu proyecto de Android Studio agrega lo siguiente a tu braze.xml.
1
2
  <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 la configuración de tu aplicación con push y el almacenamiento de tus credenciales en nuestro servidor. Consulta la aplicación de ejemplo MAUI de iOS para más detalles.

Paso 2: Solicitar permiso para notificaciones push

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

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

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

New Stuff!