# Appels VoIP Cordova

Pushwoosh prend en charge les notifications d'appel de type VoIP pour iOS et Android à l'aide du `pushwoosh-cordova-plugin`. Cela active la fonctionnalité d'appel VoIP native, y compris l'interface utilisateur d'appel entrant et les événements de contrôle d'appel.

## 1. Ajouter le plugin Cordova de Pushwoosh avec la VoIP activée

Installez le plugin avec l'indicateur VoIP activé :

```sh
cordova plugin add pushwoosh-cordova-plugin --variable PW_VOIP_IOS_ENABLED=true --variable PW_VOIP_ANDROID_ENABLED=true
```

Cela configurera le plugin pour prendre en charge la fonctionnalité VoIP sur iOS.

## 2. Ajouter la dépendance CocoaPod PushwooshVoIP

Assurez-vous que le pod `PushwooshVoIP` est inclus automatiquement via le plugin. Si nécessaire, vérifiez manuellement dans votre `Podfile` :

```ruby
pod 'PushwooshVoIP'
```

> Ce pod est requis pour prendre en charge les notifications VoIP basées sur PushKit et la gestion des appels au niveau du système.

## 3. Activer le mode arrière-plan VoIP dans Xcode

Ouvrez votre projet dans Xcode et suivez ces étapes :

1. Allez dans **Signing & Capabilities** (Signature et capacités).
2. Ajoutez la capacité **Background Modes** (Modes d'arrière-plan).
3. Cochez l'option **Voice over IP** (Voix sur IP).

Cela permet à votre application de recevoir des notifications push VoIP entrantes lorsqu'elle est en arrière-plan.

## 4. Configurer le code d'application VoIP (si vous utilisez à la fois les notifications push VoIP et standard)

Si votre application utilise à la fois les notifications push standard et VoIP, vous devez définir explicitement le code d'application VoIP avant l'initialisation de la VoIP :

```javascript
pushwoosh.setVoipAppCode("XXXXX-XXXXX");
```

Remplacez `"XXXXX-XXXXX"` par le code d'application Pushwoosh attribué à votre application compatible VoIP dans le panneau de contrôle Pushwoosh.
<Aside type="caution" title="Important">
- Les jetons pour les notifications push VoIP seront enregistrés sous le code d'application VoIP, tandis que les jetons de notification push standard seront enregistrés sous le code d'application principal.

- Cette méthode doit être appelée **avant** d'appeler la méthode `registerDevice()`.
</Aside> 


## 5. Demander l'autorisation d'appel sur Android

Sur Android, vous devez demander à un utilisateur l'autorisation de recevoir des appels. Pour ce faire, appelez la méthode `requestCallPermission()`. Cela doit être fait avant d'enregistrer un appareil.

```javascript
pushwoosh.requestCallPermission();
```


## 6. Initialiser les paramètres VoIP

Appelez la méthode suivante pour initialiser la fonctionnalité VoIP :

```javascript
PushNotification.prototype.initializeVoIPParameters = function(supportsVideo, ringtoneSound, handleTypes, success, error) {
    if (typeof handleTypes === "function") {
        error = ringtoneSound;
        success = supportsVideo;
        handleTypes = undefined;
        ringtoneSound = undefined;
        supportsVideo = undefined;
    }

    exec(success, error, "PushNotification", "initializeVoIPParameters", [
        !!supportsVideo,
        ringtoneSound || "",
        handleTypes != null ? Number(handleTypes) : 1
    ]);
};
```

### Paramètres

- `supportsVideo` – `true` ou `false` selon que votre application prend en charge les appels vidéo
- `ringtoneSound` – nom du fichier de sonnerie personnalisé (par ex. `"incoming.caf"`), ou une chaîne vide pour la valeur par défaut
- `handleTypes` – masque de bits numérique pour les types de gestion d'appel (`1` pour le numéro de téléphone, `2` pour l'e-mail, etc.)

## 7. Rappels et méthodes VoIP disponibles

Le plugin Cordova prend en charge les méthodes et événements suivants liés à la VoIP :

- `answer` – appelé lorsqu'un utilisateur répond à un appel entrant
- `endCall` – appelé lorsqu'un utilisateur termine l'appel en cours
- `hangup` – appelé lorsqu'un appel est raccroché
- `reject` – appelé lorsqu'un appel entrant est rejeté
- `muted` – basculer l'état muet, iOS uniquement
- `held` – basculer l'état en attente, iOS uniquement
- `voipPushPayload` – renvoie la charge utile de la notification push pour l'appel VoIP entrant
- `incomingCallSuccess` – appelé lorsque l'interface d'appel système s'affiche avec succès, iOS uniquement
- `incomingCallFailure` – appelé lorsque l'interface d'appel système ne parvient pas à s'afficher, iOS uniquement
- `speakerOn` – activer le haut-parleur
- `speakerOff` – désactiver le haut-parleur
- `playDTMF` – jouer une tonalité DTMF pendant un appel, iOS uniquement

Ceux-ci peuvent être accrochés à l'aide de l'objet `PushNotification` de Cordova, vous permettant de contrôler et de répondre aux changements d'état des appels VoIP.


## Liens connexes

- [Aperçu du SDK Cordova de Pushwoosh](/fr/developer/pushwoosh-sdk/cross-platform-frameworks/cordova/)
- [Notifications Push VoIP sur iOS (Documentation Apple)](https://developer.apple.com/documentation/pushkit)