# Cordova VoIP-Anrufe

Pushwoosh unterstützt VoIP-Anrufbenachrichtigungen für iOS und Android über das `pushwoosh-cordova-plugin`. Dies ermöglicht native VoIP-Anruffunktionen, einschließlich der Benutzeroberfläche für eingehende Anrufe und Ereignisse zur Anrufsteuerung.

## 1. Fügen Sie das Pushwoosh Cordova-Plugin mit aktivierter VoIP-Funktion hinzu

Installieren Sie das Plugin mit aktiviertem VoIP-Flag:

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

Dadurch wird das Plugin so konfiguriert, dass es die VoIP-Funktionalität unter iOS unterstützt.

## 2. Fügen Sie die PushwooshVoIP CocoaPod-Abhängigkeit hinzu

Stellen Sie sicher, dass der `PushwooshVoIP`-Pod automatisch über das Plugin eingebunden wird. Überprüfen Sie dies bei Bedarf manuell in Ihrer `Podfile`:

```ruby
pod 'PushwooshVoIP'
```

> Dieser Pod ist erforderlich, um PushKit-basierte VoIP-Benachrichtigungen und die Anrufbehandlung auf Systemebene zu unterstützen.

## 3. Aktivieren Sie den VoIP-Hintergrundmodus in Xcode

Öffnen Sie Ihr Projekt in Xcode und folgen Sie diesen Schritten:

1.  Gehen Sie zu **Signing & Capabilities**.
2.  Fügen Sie die **Background Modes**-Fähigkeit hinzu.
3.  Aktivieren Sie die Option **Voice over IP**.

Dies ermöglicht Ihrer App, eingehende VoIP-Pushes zu empfangen, während sie sich im Hintergrund befindet.

## 4. Konfigurieren Sie den VoIP-App-Code (wenn Sie sowohl VoIP- als auch reguläre Pushes verwenden)

Wenn Ihre App sowohl Standard- als auch VoIP-Pushes verwendet, müssen Sie den VoIP-Anwendungscode explizit vor der VoIP-Initialisierung festlegen:

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

Ersetzen Sie `"XXXXX-XXXXX"` durch den Pushwoosh App Code, der Ihrer VoIP-fähigen Anwendung im Pushwoosh Control Panel zugewiesen ist.
<Aside type="caution" title="Wichtig">
- Tokens für VoIP-Pushes werden unter dem VoIP App Code registriert, während reguläre Push-Tokens unter dem primären App Code registriert werden.

- Diese Methode sollte **vor** dem Aufruf der `registerDevice()`-Methode aufgerufen werden.
</Aside> 


## 5. Anrufberechtigung auf Android anfordern

Unter Android müssen Sie die Berechtigung anfordern, Anrufe von einem Benutzer zu empfangen. Rufen Sie dazu die `requestCallPermission()`-Methode auf. Dies sollte vor der Registrierung eines Geräts erfolgen.

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


## 6. VoIP-Parameter initialisieren

Rufen Sie die folgende Methode auf, um die VoIP-Funktionalität zu initialisieren:

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

### Parameter

- `supportsVideo` – `true` oder `false`, je nachdem, ob Ihre App Videoanrufe unterstützt
- `ringtoneSound` – Name der benutzerdefinierten Klingeltondatei (z. B. `"incoming.caf"`) oder eine leere Zeichenfolge für den Standard
- `handleTypes` – numerische Bitmaske für Anruf-Handle-Typen (`1` für Telefonnummer, `2` für E-Mail usw.)

## 7. Verfügbare VoIP-Callbacks und -Methoden

Das Cordova-Plugin unterstützt die folgenden VoIP-bezogenen Methoden und Ereignisse:

- `answer` – wird aufgerufen, wenn ein Benutzer einen eingehenden Anruf annimmt
- `endCall` – wird aufgerufen, wenn ein Benutzer den aktuellen Anruf beendet
- `hangup` – wird aufgerufen, wenn ein Anruf aufgelegt wird
- `reject` – wird aufgerufen, wenn ein eingehender Anruf abgewiesen wird
- `muted` – Stummschaltung umschalten, nur für iOS
- `held` – Haltestatus umschalten, nur für iOS
- `voipPushPayload` – gibt die Push-Payload für den eingehenden VoIP-Anruf zurück
- `incomingCallSuccess` – wird aufgerufen, wenn die Systemanruf-Benutzeroberfläche erfolgreich angezeigt wird, nur für iOS
- `incomingCallFailure` – wird aufgerufen, wenn die Anzeige der Systemanruf-Benutzeroberfläche fehlschlägt, nur für iOS
- `speakerOn` – Lautsprecher einschalten
- `speakerOff` – Lautsprecher ausschalten
- `playDTMF` – DTMF-Ton während eines Anrufs abspielen, nur für iOS

Diese können über das `PushNotification`-Objekt von Cordova eingehängt werden, sodass Sie den Status von VoIP-Anrufen steuern und darauf reagieren können.


## Verwandte Links

- [Pushwoosh Cordova SDK Übersicht](/de/developer/pushwoosh-sdk/cross-platform-frameworks/cordova/)
- [VoIP-Push-Benachrichtigungen unter iOS (Apple Docs)](https://developer.apple.com/documentation/pushkit)