Medien eines Anrufs oder einer Konversation wieder verbinden
Übersicht
In dieser Anleitung erfahren Sie, wie Sie die Verbindung zu einem Anruf oder den Medien eines Gesprächs in Ihrer Android- und iOS-Anwendung Vonage Client wiederherstellen können.
Automatisch wiederverbinden
Das Client SDK kann versuchen, die Verbindung zu einem Anruf oder zu den Medien eines Gesprächs automatisch wiederherzustellen, wenn Sie den Client auf autoReoffer Konfigurationseigenschaft. Dies ist nützlich, wenn die Internetverbindung kurzzeitig unterbrochen wird oder der Benutzer zwischen Mobilfunk und WiFi wechselt.
val client = NexmoClient.Builder().autoMediaReoffer(true).build(this)
NexmoClient client = new NexmoClient.Builder()
.autoMediaReoffer(true)
.build(context);
let config = NXMClientConfig()
config.autoMediaReoffer = true
NXMClient.setConfiguration(config)
NXMClientConfig *configuration = [[NXMClientConfig alloc] init];
configuration.autoMediaReoffer = YES;
[NXMClient setConfiguration:configuration];
Abhören von Anrufstatusänderungen
Um zu wissen, wann sich der Status der Medien eines Anrufs oder einer Unterhaltung geändert hat, können Sie mit dem Android- und iOS-SDK auf Medienstatusereignisse achten. Beachten Sie den Status "Getrennt". Ein getrennter Status bedeutet, dass ein vorübergehendes Netzwerkproblem aufgetreten ist und der Client versucht, die Verbindung wiederherzustellen, wenn die autoReoffer Konfigurationseigenschaft gesetzt wurde. Wenn Sie nicht die Eigenschaft autoReoffer zu true dann können Sie die Verbindung hier manuell wiederherstellen.
Um die MediaConnectionState Aktualisierungen müssen Sie eine NexmoMediaStatusListener. Sie können dies tun, indem Sie es für das Gesprächsobjekt eines Anrufs festlegen.
call?.conversation?.addMediaStatusListener(object: NexmoMediaStatusListener {
override fun onMediaConnectionStateChange(legId: String, status: EMediaConnectionState) {
// Update UI and/or reconnect
}
})
Um die MediaConnectionState Updates, müssen Sie eine NexmoMediaStatusListener. Sie können dies tun, indem Sie es für das Gesprächsobjekt eines Anrufs festlegen.
NexmoMediaStatusListener listener = new NexmoMediaStatusListener() {
@Override
public void onMediaConnectionStateChange(@NonNull String legId, @NonNull EMediaConnectionState status) {
// Update UI and/or reconnect
}
};
call.getConversation().addMediaStatusListener(listener);
Um die NXMMediaConnectionStatus Aktualisierungen müssen Sie sich an die NXMConversationDelegate. Sie können dies tun, indem Sie es für das Gesprächsobjekt eines Anrufs festlegen.
call.conversation.delegate = self
Dann können Sie die onMediaConnectionStateChange Delegiertenfunktion
extension ViewController: NXMConversationDelegate {
func conversation(_ conversation: NXMConversation, didReceive error: Error) {}
func conversation(_ conversation: NXMConversation, onMediaConnectionStateChange state: NXMMediaConnectionStatus, legId: String) {
// Update UI and/or reconnect
}
}
Um die NXMMediaConnectionStatus Aktualisierungen müssen Sie sich an die NXMConversationDelegate. Sie können dies tun, indem Sie es für das Gesprächsobjekt eines Anrufs festlegen.
call.conversation.delegate = self
Dann können Sie die onMediaConnectionStateChange Delegiertenfunktion
- (void)conversation:(NXMConversation *)conversation didReceive:(NSError *)error {}
- (void)conversation:(NXMConversation *)conversation onMediaConnectionStateChange:(NXMMediaConnectionStatus)state legId:(NSString *)legId {
// Update UI and/or reconnect
}
Manuelles Wiederherstellen der Verbindung
Das Client SDK verfügt über Funktionen zum expliziten Wiederverbinden eines Anrufs oder der Medien eines Gesprächs. Dies ist z. B. nützlich, wenn Sie das Gerät wechseln möchten, auf dem ein Benutzer spricht, ohne aufzulegen und einen neuen Anruf zu starten, wenn die Anwendung beendet wird.
Anrufen:
client.reconnectCall("conversationId", "legId", object : NexmoRequestListener<NexmoCall> {
override fun onSuccess(result: NexmoCall?) {
// handle call
}
override fun onError(error: NexmoApiError) {
// handle error
}
})
Konversationsmedien:
conversation.reconnectMedia()
Anrufen:
NexmoRequestListener<NexmoCall> listener = new NexmoRequestListener<NexmoCall>() {
@Override
public void onSuccess(@Nullable NexmoCall result) {
// handle call
}
@Override
public void onError(@NonNull NexmoApiError error) {
// handle error
}
};
client.reconnectCall("conversationId", "legId", listener);
Konversationsmedien:
conversation.reconnectMedia();
Anrufen:
NXMClient.shared.reconnectCall(withConversationId: "", andLegId: "") { error, call in
if error != nil {
// handle error
return
}
// handle call
}
Konversationsmedien:
conversation.reconnectMedia()
Anrufen:
[NXMClient.shared reconnectCallWithConversationId:@"" andLegId:@"" completionHandler:^(NSError * _Nullable error, NXMCall * _Nullable call) {
if (error) {
// handle error
return;
}
// handle call
}];
Konversationsmedien:
[conversation reconnectMedia];