# Personnalisation du plugin Cordova

## Notifications push au premier plan

Lors de la réception d'une notification push en arrière-plan, aucun événement n'est déclenché jusqu'à ce que l'on clique sur la notification. Une fois ouverte, le plugin Pushwoosh déclenche les événements `push-receive` et `push-notification`.

Lorsqu'une notification push est reçue au premier plan, le plugin déclenche automatiquement `push-receive` et crée une notification dans le Centre de notifications. Lorsque cette notification est ouverte, il déclenche `push-notification`.

Vous pouvez écouter l'événement `push-receive` pour réagir immédiatement à une notification push si elle est reçue au premier plan, par exemple pour mettre à jour le contenu de la page actuelle de votre application. D'un autre côté, `push-notification` est utilisé pour réagir à un événement de clic sur une notification, ce qui nécessite une interaction de l'utilisateur, par exemple pour naviguer dans votre application, déclencher un nouveau processus, etc.

Pour modifier l'apparence des notifications push au premier plan, vous pouvez utiliser les préférences **IOS\_FOREGROUND\_ALERT\_TYPE** et **ANDROID\_FOREGROUND\_PUSH** :

**IOS\_FOREGROUND\_ALERT\_TYPE**

*   `NONE` – n'affiche pas de notification lorsque l'application est au premier plan (par défaut)
*   `BANNER` – affiche une alerte sous forme de bannière dans l'application
*   `ALERT` – notification d'alerte

**ANDROID\_FOREGROUND\_PUSH**

*   `true` – ne pas gérer automatiquement les notifications push au premier plan
*   `false` – gérer automatiquement les notifications push au premier plan (par défaut)

Exemple :

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

## Son de notification push personnalisé

Pour activer un son de notification personnalisé sur Android, placez les fichiers sonores dans le dossier **www/res** et spécifiez chaque son dans `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>
```

Les sons seront accessibles dans le menu déroulant **Son** du panneau **Envoyer un push**.

Sur iOS, les fichiers sonores ne sont pas encore automatiquement associés à l'application Pushwoosh, mais peuvent être utilisés manuellement, par exemple `www/res/sound_name.wav`.

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

Les notifications iOS ne prennent en charge que les formats de fichiers .aiff, .wav et .caf.
</Aside>

## Icône de notification push personnalisée

L'icône de notification push peut être personnalisée sur Android localement en utilisant `pw_notification` comme nom de ressource pour cette icône (voir l'exemple [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)) ; ou à distance en référençant n'importe quel nom de ressource dans le paramètre **Icône** du panneau **Envoyer un push**.

## Données de notification push personnalisées

Les données de notification push personnalisées peuvent être envoyées en utilisant le paramètre **Action** dans le panneau **Envoyer un push**. Pour recevoir et gérer ces données, utilisez le code suivant :

```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
    }
  }
);
```

## Contrôle du niveau de journalisation

Afin de faciliter le débogage et l'intégration, le SDK affichera par défaut toutes les requêtes dans la console. Lorsque vous êtes prêt pour la version de production, définissez la variable `LOG_LEVEL` sur l'une des valeurs suivantes :

*   `NONE` – aucun journal du SDK
*   `ERROR` – n'affiche que les erreurs dans la console
*   `WARNING` – affiche les avertissements
*   `INFO` – affiche les messages d'information
*   `DEBUG` – affiche tout, y compris les informations de débogage (par défaut)

Exemple :

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

## Liens profonds

Nous recommandons d'utiliser [https://github.com/EddyVerbruggen/Custom-URL-scheme](https://github.com/EddyVerbruggen/Custom-URL-scheme)\
Il est très facile de configurer des liens profonds pour Cordova et cela fonctionne nativement avec la fonctionnalité de liens profonds de Pushwoosh.

Vous trouverez les instructions d'installation et d'utilisation dans [ce guide](/fr/developer/guides/messaging-channels/deep-linking/) ou dans la [documentation du plugin](https://github.com/EddyVerbruggen/Custom-URL-scheme#2-installation).

## Pont JS pour Rich Media

Vous pouvez appeler vos fonctions JS depuis un Rich Media dans une WebView Cordova via des interfaces JavaScript.\
Un appel depuis un Rich Media doit avoir le format suivant :

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

Exemple :

**1.** Créez un Rich Media avec un appel JavaScript :

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

**2.** Ajoutez une interface JavaScript à votre projet :

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

**3.** Ajoutez la fonction :

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

## Utilisation du plugin Pushwoosh avec d'autres services FCM

Si votre application utilise d'autres plugins qui dépendent de **firebase-messaging**, cela peut entraîner des conflits ou un dysfonctionnement de l'un des plugins. Pour résoudre ce conflit, vous pouvez ajouter une classe `FirebaseMessagingService` personnalisée qui acheminera les notifications push entre les plugins. Le plugin Cordova de Pushwoosh contient un modèle de cette classe que vous pouvez utiliser tel quel pour forcer toutes les notifications à passer par les gestionnaires de Pushwoosh ou le modifier pour gérer également les notifications d'autres fournisseurs. Pour activer le modèle, décommentez les lignes suivantes dans le fichier `plugin.xml` du 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>
```

## Partagez vos commentaires avec nous

Vos commentaires nous aident à créer une meilleure expérience, nous serions donc ravis de connaître votre avis si vous rencontrez des problèmes lors du processus d'intégration du SDK. Si vous rencontrez des difficultés, n'hésitez pas à nous faire part de vos réflexions [via ce formulaire](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform).