Sound Echo - iOS to iOS Voice Calls - Router is Speaker
See original GitHub issueWe are facing echoes when calling from an iOS device to another iOS device. It only works if the default sound device is not the speaker (I know because I used to see the default was Phone a long time back in the previous versions but not sure which) or call is muted. How to achieve set to Phone?
Description:
We added SDK to our project (Android & iOS) and made it work. There is no call echo when we call from iOS to Android or Android to iOS, but calling from iOS to iOS there is a huge echo because the call audio session (sound device) is set to Speaker by default.
Please note that when we mute the audio (builder.setAudioMuted(true)
) and start the call and then the audio is unmuted during the call then there is no echo at all.
To conclude, we need to start the call with any router rather than the speaker. is there any way in iOS SDK to set the sound device to Phone or anything else rather than speaker?
Steps to reproduce:
- Call from iOS A to iOS B, default sound device is the speaker by default set by SDK on iOS device A
- Pick the call on iOS device B
- Echo happens
Expected behavior:
The expected behavior is to have no echo when calling from iOS to iOS
Client information:
- Browser / app version: iPhone 13 pro max, iPhone 12 pro max, iPad Air 2
- Operating System: iOS 15.3.1, iPadOS 15.0.2
Additional information:
JitsiMeet iOS SDK Version: 4.1.0
Our code to join the call:
let jitsiMeetView = JitsiMeetView()
jitsiMeetView.delegate = self
self.jitsiMeetView = jitsiMeetView
let options = JitsiMeetConferenceOptions.fromBuilder { (builder) in
builder.room = roomName.replacingOccurrences(of: "&", with: "-")
// Settings for audio and video
builder.setAudioOnly(!hasVideo)
if hasVideo {
builder.setAudioMuted(false)
builder.setVideoMuted(false)
}
builder.setSubject(roomName)
builder.userInfo = JitsiMeetUserInfo(displayName: MyProfile.shared.profile.name,
andEmail: nil,
andAvatar: MXURL(mxContentURI: MyProfile.shared.profile.defaultPicture?.path ?? "")?.contentURL())
if let UUID = callUUID {
builder.setCall(UUID)
}
builder.setCallHandle(Config.url.callHandle)
if isDirect {
builder.setFeatureFlag("meeting-name.enabled", withBoolean: false)
builder.setFeatureFlag("raise-hand.enabled", withBoolean: false)
}
builder.setFeatureFlag("security-options.enabled", withBoolean: false)
builder.setConfigOverride("localFlipX", withBoolean: false)
}
jitsiMeetView.join(options)
Issue Analytics
- State:
- Created 2 years ago
- Comments:8 (4 by maintainers)
Top GitHub Comments
Fantastic news!
You meant “soon” when you said “soon”! We’ve updated to v5.0.0. Thank you!