# Appels VoIP sur Android

Pushwoosh prend en charge les notifications d'appel de type VoIP pour Android via le module `pushwoosh-calls`. Cela permet d'utiliser l'interface d'appel native et la gestion du cycle de vie des appels grâce à la pile de télécommunication d'Android.


## 1. Ajouter le module `pushwoosh-calls`

Assurez-vous d'inclure la dépendance `pushwoosh-calls` dans votre projet.

**Gradle :**

```groovy
dependencies {
    implementation 'com.pushwoosh:pushwoosh-calls:<latest-version>'
}
```

Remplacez `<latest-version>` par la version actuelle disponible sur [Maven Central](https://mvnrepository.com/artifact/com.pushwoosh/pushwoosh-calls).


## 2. Demander les autorisations d'appel

Demandez les autorisations requises lors de l'exécution à l'aide de la fonction d'assistance :

```java
import com.pushwoosh.calls.PushwooshCallSettings;

PushwooshCallSettings.requestCallPermissions();
```

> Cela gère la demande d'autorisations comme `READ_PHONE_NUMBERS`, nécessaire pour une gestion correcte des appels.



## 3. Implémenter `CallEventListener` et l'enregistrer dans le Manifest

Pour gérer les appels entrants et les événements, implémentez l'interface `CallEventListener` dans votre application.

#### Exemple en Java

```java
public class DemoCallEventListener implements CallEventListener {

    @Override
    public void onAnswer(@NonNull PushwooshVoIPMessage voIPMessage, int videoState) {
        // implémentez cette méthode pour naviguer vers votre interface utilisateur en cours d'appel
        Intent intent = new Intent(context, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);
    }

    @Override
    public void onReject(@NonNull PushwooshVoIPMessage voIPMessage) {
        // surchargez cette méthode pour gérer les appels rejetés
    }

    @Override
    public void onDisconnect(@NonNull PushwooshVoIPMessage voIPMessage) {
        // surchargez cette méthode pour gérer les appels déconnectés
    }

    @Override
    public void onCreateIncomingConnection(@Nullable Bundle payload) {
        // c'est le point le plus précoce où la charge utile de la notification d'appel est accessible dans votre application,
        // utilisez-le pour préparer l'interface utilisateur de votre application aux interactions de l'utilisateur avec les notifications d'appel
    }

    @Override
    public void onCallAdded(@NonNull PushwooshVoIPMessage voIPMessage) {
        // méthode d'extension de InCallService, fournit des options de personnalisation pour les appareils Wearable appairés
    }

    @Override
    public void onCallRemoved(@NonNull PushwooshVoIPMessage voIPMessage) {
        // méthode d'extension de InCallService, fournit des options de personnalisation pour les appareils Wearable appairés
    }
}
```

#### AndroidManifest.xml

Déclarez votre classe d'écouteur à l'aide d'une balise `<meta-data>` :

```xml
<meta-data
    android:name="com.pushwoosh.CALL_EVENT_LISTENER"
    android:value="com.pushwoosh.demoapp.DemoCallEventListener" />
```


## 4. Configurer les paramètres d'appel (optionnel)

Utilisez `PushwooshCallSettings` pour affiner le comportement des appels, les sons et les paramètres d'affichage.

#### Exemple d'utilisation

```kotlin
import com.pushwoosh.calls.PushwooshCallSettings

PushwooshCallSettings.setPhoneAccount("com.pushwoosh.voip")
PushwooshCallSettings.setPhoneAccountHandle("PushwooshCallHandle")
PushwooshCallSettings.setIncomingCallChannelName("Incoming Calls")
PushwooshCallSettings.setOngoingCallChannelName("Ongoing Calls")
PushwooshCallSettings.setCallSound("custom_ringtone.mp3")
```


## Liens connexes

- [Aperçu du SDK Android de Pushwoosh](/fr/developer/pushwoosh-sdk/android-sdk/)
- [Source du plugin d'appel Pushwoosh](https://github.com/Pushwoosh/pushwoosh-android-sdk)
- [TelecomManager (Documentation Android)](https://developer.android.com/reference/android/telecom/TelecomManager)