Reconnecter les médias d'un appel ou d'une conversation
Vue d'ensemble
Ce guide explique comment se reconnecter à un appel ou au support d'une conversation dans votre application Vonage Client Android et iOS.
Reconnexion automatique
Le Client SDK peut tenter de se reconnecter automatiquement à un appel ou au média d'une conversation si vous définissez le paramètre autoReoffer de la configuration. Cette propriété est utile en cas de brève interruption de la connectivité internet ou lorsque l'utilisateur passe d'un réseau cellulaire à un réseau WiFi.
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];
Écoute des changements d'état des appels
Pour savoir quand l'état des médias d'un appel ou d'une conversation a changé, vous pouvez écouter les événements d'état des médias avec le SDK Android et iOS. Notez l'état déconnecté. Un état déconnecté signifie qu'il y a eu un problème de réseau temporaire et que le client tentera une reconnexion en fournissant au SDK Android et au SDK iOS l'autorisation de se reconnecter. autoReoffer a été définie. Si vous n'avez pas défini autoReoffer à true vous pouvez alors vous reconnecter manuellement ici.
To get MediaConnectionState updates you need to add a NexmoMediaStatusListener. You can do this by setting it on a call's conversation object.
call?.conversation?.addMediaStatusListener(object: NexmoMediaStatusListener {
override fun onMediaConnectionStateChange(legId: String, status: EMediaConnectionState) {
// Update UI and/or reconnect
}
})
To get MediaConnectionState updates, you need to add a NexmoMediaStatusListener. You can do this by setting it on a call's conversation object.
NexmoMediaStatusListener listener = new NexmoMediaStatusListener() {
@Override
public void onMediaConnectionStateChange(@NonNull String legId, @NonNull EMediaConnectionState status) {
// Update UI and/or reconnect
}
};
call.getConversation().addMediaStatusListener(listener);
To get NXMMediaConnectionStatus updates you need to conform to the NXMConversationDelegate. You can do this by setting it on a call's conversation object.
call.conversation.delegate = self
Then you can implement the onMediaConnectionStateChange delegate function
extension ViewController: NXMConversationDelegate {
func conversation(_ conversation: NXMConversation, didReceive error: Error) {}
func conversation(_ conversation: NXMConversation, onMediaConnectionStateChange state: NXMMediaConnectionStatus, legId: String) {
// Update UI and/or reconnect
}
}
To get NXMMediaConnectionStatus updates you need to conform to the NXMConversationDelegate. You can do this by setting it on a call's conversation object.
call.conversation.delegate = self
Then you can implement the onMediaConnectionStateChange delegate function
- (void)conversation:(NXMConversation *)conversation didReceive:(NSError *)error {}
- (void)conversation:(NXMConversation *)conversation onMediaConnectionStateChange:(NXMMediaConnectionStatus)state legId:(NSString *)legId {
// Update UI and/or reconnect
}
Reconnexion manuelle
Le Client SDK dispose de fonctions permettant de reconnecter explicitement les médias d'un appel ou d'une conversation. C'est utile, par exemple, lorsque vous souhaitez changer l'appareil sur lequel un utilisateur parle sans raccrocher et commencer un nouvel appel si l'application meurt.
Call:
client.reconnectCall("conversationId", "legId", object : NexmoRequestListener<NexmoCall> {
override fun onSuccess(result: NexmoCall?) {
// handle call
}
override fun onError(error: NexmoApiError) {
// handle error
}
})
Conversation media:
conversation.reconnectMedia()
Call:
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);
Conversation media:
conversation.reconnectMedia();
Call:
NXMClient.shared.reconnectCall(withConversationId: "", andLegId: "") { error, call in
if error != nil {
// handle error
return
}
// handle call
}
Conversation media:
conversation.reconnectMedia()
Call:
[NXMClient.shared reconnectCallWithConversationId:@"" andLegId:@"" completionHandler:^(NSError * _Nullable error, NXMCall * _Nullable call) {
if (error) {
// handle error
return;
}
// handle call
}];
Conversation media:
[conversation reconnectMedia];