twilio_voice icon indicating copy to clipboard operation
twilio_voice copied to clipboard

[iOS] Poor call quality on iOS with a lot of jittery

Open kirilllapshev opened this issue 1 year ago • 5 comments

Issue Summary

Hey when I make a call from/to iOS the quality of the call is very poor. I've tested it using Android and Web and it worked well.

I've also used the twilio_voice_quickstart just to make sure that the problems wasn't with the iOS package it self, and it's working fine.

Do you know how can I solve this? Am I the only one experiencing it?

Steps to Reproduce

  1. Make a call from/to an iOS device

Any other relevant information. For example, why do you consider this a bug and what did you expect to happen instead?

I'm using IPhone 13 Pro Max with iOS 17.4.1

kirilllapshev avatar May 16 '24 17:05 kirilllapshev

I've discover that this issue is being cause by listening to the isHolding event, since is trigger the Hold function in the iOS code

kirilllapshev avatar May 24 '24 11:05 kirilllapshev

Did you find a solution for this? Facing the same issue. Here's what it looks like for me:

flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold
flutter: voip-onCallStateChanged CallEvent.unhold
flutter: voip-onCallStateChanged CallEvent.hold

jd-bus avatar Jun 02 '24 00:06 jd-bus

@kirilllapshev by the way this issue is probably a dupe of #207 the maintainer has commented on that one also

jd-bus avatar Jun 02 '24 04:06 jd-bus

Hey @jd-bus as I inspected the code the error lays in the iOS layer in the isOnHold event, that is triggering hold()

Here is the problem https://github.com/cybex-dev/twilio_voice/blob/master/ios/Classes/SwiftTwilioVoicePlugin.swift#L234-L236 when we listen to isOnHold we are not supposed to toggle call.isOnHold flag

@cybex-dev is there any specific reason to toggle it?

kirilllapshev avatar Jun 06 '24 14:06 kirilllapshev

Hey @jd-bus as I inspected the code the error lays in the iOS layer in the isOnHold event, that is triggering hold()

Here is the problem https://github.com/cybex-dev/twilio_voice/blob/master/ios/Classes/SwiftTwilioVoicePlugin.swift#L234-L236 when we listen to isOnHold we are not supposed to toggle call.isOnHold flag

@cybex-dev is there any specific reason to toggle it?

Great spotting, thank you!

Yes - this is erroneous and should not be toggled. I'll address in next update.

cybex-dev avatar Sep 03 '24 12:09 cybex-dev