# Personalización del plugin de Cordova

## Notificaciones push en primer plano

Al recibir una notificación push en segundo plano, no se activan eventos hasta que se hace clic en la notificación push. Después de abrirla, el plugin de Pushwoosh dispara los eventos `push-receive` y `push-notification`.

Cuando se recibe una notificación push en primer plano, el plugin dispara `push-receive` automáticamente y crea una notificación en el Centro de Notificaciones. Cuando se abre esta notificación, dispara `push-notification`.

Puede escuchar el evento `push-receive` para reaccionar inmediatamente a una notificación push en caso de que se reciba en primer plano, por ejemplo, para actualizar el contenido en una página actual de su aplicación. `push-notification`, por otro lado, se utiliza para reaccionar a un evento de clic en una notificación, que requiere la interacción del usuario, por ejemplo, para navegar dentro de su aplicación, activar un nuevo proceso en su aplicación, etc.

Para cambiar la apariencia de la notificación push en primer plano, puede utilizar las preferencias **IOS\_FOREGROUND\_ALERT\_TYPE** y **ANDROID\_FOREGROUND\_PUSH**:

**IOS\_FOREGROUND\_ALERT\_TYPE**

*   `NONE` – no mostrar una notificación cuando la aplicación está en primer plano (predeterminado)
*   `BANNER` – muestra una alerta de banner dentro de la aplicación
*   `ALERT` – notificación de alerta

**ANDROID\_FOREGROUND\_PUSH**

*   `true` – no manejar automáticamente las notificaciones push en primer plano
*   `false` – manejar automáticamente las notificaciones push en primer plano (predeterminado)

Ejemplo:

```
cordova plugin add pushwoosh-cordova-plugin --variable IOS_FOREGROUND_ALERT_TYPE="ALERT" --variable ANDROID_FOREGROUND_PUSH="true"
```

## Sonido de push personalizado

Para habilitar un sonido de notificación personalizado en Android, coloque los archivos de sonido en la carpeta **www/res** y especifique cada sonido en `config.xml`:

```txt
<?xml version=‘1.0’ encoding=‘utf-8’?>
<widget id="YOUR_ID" version="1.0.0" xmlns="http://www.w3.org/ns/widgets” xmlns:cdv=“http://cordova.apache.org/ns/1.0">
	...
    <platform name="android">
        <allow-intent href="market:*" />
		...
        <-- Add this line for each sound -->
        <resource-file src="www/res/push.wav" target="res/raw/push.wav" />
    </platform>
</widget>
```

Los sonidos estarán accesibles en el menú desplegable **Sound** del panel **Send Push**.

En iOS, los archivos de sonido aún no se asocian automáticamente con la Aplicación Pushwoosh, pero se pueden usar manualmente, por ejemplo, `www/res/sound_name.wav`.

<Aside type="caution">
#### iOS

Las notificaciones de iOS solo admiten los formatos de archivo .aiff, .wav y .caf.
</Aside>

## Icono de push personalizado

El icono de la notificación push se puede personalizar en Android localmente usando `pw_notification` como nombre de recurso para dicho icono (ver muestra [1](https://github.com/Pushwoosh/pushwoosh-phonegap-cordova-sample/blob/master/Cordova/hooks/after\_platform\_add/2\_set\_notification\_icon.js) [2](https://github.com/Pushwoosh/pushwoosh-phonegap-cordova-sample/tree/master/Cordova/config/android/res)); o de forma remota haciendo referencia a cualquier nombre de recurso en la configuración de **Icon** en el panel **Send Push**.

## Datos de push personalizados

Se pueden enviar datos de push personalizados utilizando la configuración **Action** en el panel **Send Push**. Para recibir y manejar dichos datos, utilice el siguiente código:

```javascript
document.addEventListener('push-notification',
  function(event) {
    var message = event.notification.message; // Push message
    var userData = event.notification.userdata; // Custom push data

    if (userData) {
      // handle custom push data here
    }
  }
);
```

## Control del nivel de registro (Log level)

Para ayudar con la depuración y la integración, el SDK imprimirá todas las solicitudes en la consola por defecto. Cuando esté listo para la compilación de producción, establezca la variable `LOG_LEVEL` en uno de los siguientes valores:

*   `NONE` – sin registros del SDK
*   `ERROR` – solo mostrar errores en la consola
*   `WARNING` – mostrar advertencias
*   `INFO` – mostrar mensajes informativos
*   `DEBUG` – mostrar todo, incluida la información de depuración (predeterminado)

Ejemplo:

```
cordova plugin add pushwoosh-cordova-plugin --variable LOG_LEVEL="INFO"
```

## Enlaces profundos (Deep linking)

Recomendamos usar [https://github.com/EddyVerbruggen/Custom-URL-scheme](https://github.com/EddyVerbruggen/Custom-URL-scheme)\
Es súper fácil configurar enlaces profundos para Cordova y funciona con la funcionalidad de enlaces profundos de Pushwoosh de forma nativa.

Puede encontrar la instalación y el uso en [esta guía](/es/developer/guides/messaging-channels/deep-linking/) o en la [documentación del plugin](https://github.com/EddyVerbruggen/Custom-URL-scheme#2-installation).

## Puente JS de Rich Media

Puede llamar a sus funciones JS desde Rich Media en Cordova WebView a través de interfaces de javascript.\
Una llamada desde un Rich Media debe tener el siguiente formato:

\<interface>.callFunction('\<function\_name>', \<params\_string>)

Ejemplo:

**1.** Cree un Rich Media con una llamada de javascript:

```javascript
testBridge.callFunction('testFunction', JSON.stringify({'param1' : 1, 'param2':'test'}))
```

**2.** Agregue una interfaz de javascript a su proyecto:

```javascript
pushNotification.addJavaScriptInterface('testBridge');
```

**3.** Agregue la función:

```javascript
function testFunction(params) {
    alert("Bridge is working! " + params.param1 + " " + params.param2);
}
```

## Uso del plugin de Pushwoosh con otros servicios de FCM

Si su aplicación utiliza otros plugins que dependen de **firebase-messaging**, podría resultar en conflictos, o en que uno de los plugins no funcione como se espera. Para resolver este conflicto, puede agregar una clase FirebaseMessagingService personalizada que enrutará las notificaciones push entre los plugins. El plugin de Pushwoosh para Cordova contiene una plantilla de esta clase que puede usar tal cual para forzar que todas las notificaciones pasen por los manejadores de Pushwoosh o modificarla para manejar también las notificaciones de otros proveedores. Para habilitar la plantilla, descomente las siguientes líneas en el `plugin.xml` del plugin:

```
    <service android:name="com.pushwoosh.plugin.pushnotifications.CustomFirebaseMessagingService" android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
```

## Comparta sus comentarios con nosotros

Sus comentarios nos ayudan a crear una mejor experiencia, por lo que nos encantaría saber de usted si tiene algún problema durante el proceso de integración del SDK. Si enfrenta alguna dificultad, no dude en compartir sus pensamientos con nosotros [a través de este formulario](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform).