Microphone keeps turning on and off iOS

Video SDK Type and Version
We are using the Zoom iOS Video SDK version 1.10.5

Description
We just migrated from Twilio where we never had any problems.

After connecting to a call, the microphone turns of, and after a few seconds back on. This keeps happening every few seconds.
If we manually toggle the microphone, it starts to toggle even faster.

Error?
The zoom SDK doesn’t seem to give any reliable callbacks. but CallKit gives a callback in

provider(_ provider: CXProvider, perform action: CXSetMutedCallAction)

Hello Michael,

Can you please set enableLog to true in ZoomVideoSDKInitParams() and provide logs as per the initialization instructions? This guide might also be of help.

Thank you for your patience,
Richard

Hey @michaelpetersen ,

Can you please share steps to reproduce the issue, including your code?

Have you checked if there is any loop that may be triggering this?

Best,
Tommy

Hi @tommy ,
Thanks for your reply.

I don’t know what you mean about steps. It happens every time I start a call.

I can’t find any loops or anything. It’s also odd. If I manually toggle mute, I get a callback from your SDK, but not when it automatically toggles.

To create the context I do

        let initParams = ZoomVideoSDKInitParams()
        initParams.domain = "zoom.us"
        #if DEBUG
        initParams.enableLog = true
        #endif
        
        let sdkInitReturnStatus = ZoomVideoSDK.shareInstance()?.initialize(initParams)

To connect to a call I do the following:

        let sessionContext = ZoomVideoSDKSessionContext()
        sessionContext.sessionName = roomId
        sessionContext.token = accessToken
        sessionContext.userName = userName
        sessionContext.audioOption?.connect = true
        sessionContext.videoOption?.localVideoOn = true
        sessionContext.virtualAudioMicDelegate = self
        
        let res = getShareInstance()?.joinSession(sessionContext) {

Is this enough? I otherwise have to check if I am allowed to send you the full code.

Hi @richard.zoom
Thanks for your reply.

I don’t seem to be able to upload the log file to the dev forum?

Hey @michaelpetersen , I have DM’d you so you can send it to me privately.

Best,
Tommy

I’ve received the logs via email already.

Thanks,
Richard

1 Like

Hi @michaelpetersen ,

Our team checked the log and found that the user had joined the session more than once. Every time the user joins the session, the microphone will be turned on. Would you please try to check your application to see what causes the user to join multiple times?

  1. The user joined as an attendee for the first time since someone opened this session before the user joined. After joining the session, the microphone will be turned on since ZoomVideoSDKAudioOption.mute=false.
  2. After that, the host stopped the meeting. Then the user opened the session and joined again. At this moment, the microphone turned on again.

Please look into your project to check the logic to handle session leave and join the session. Thank you.

Elaine

1 Like

@elaine.ku
It doesn’t match with our experience. It keeps toggling.
Can you see if it is the same call in the log? Maybe it is because I started two unrelated calls? I am not able to view the log myself.

I have another log where only started one call. if I can get your mail.

The problems seems to no longer occur on iOS 17.4, but it is still a problem on older versions. We have tested on 17.2.1 and 17.3

I am experiencing the same issue with CallKit and ZoomVideo SDK 1.10.10.

We are using React Native Zoom Video SDK. When we updated from 1.6.2 to 1.10.10 it started happening. I have tried a number of things debugging from the native side and the RN javascript side without luck.

There are some instances where the mute cycle doesn’t start, but then if i manually mute as a user it does start up. So I imagine it has to do somewhere with the muting / unmuting that begins with a await zoom.audioHelper.muteAudio(mySelf.userId); call or joining a session with audioOptions.mute set to true or false.

Any guidance would be helpful. i’ll be debugging this because we have to upgrade off of version 1.6.2 in the coming weeks anyway. But this seems like a very serious bug to deal with before we can release to iOS.

So it looks like the test device I have been using is an iPad on 17.3.1. When testing a build on an iPhone with 17.4 it appears to not cause the issues.

So some combination of Zoom Video SDK > 1.7 and iOS < 17.4 seems to cause this endless interval. I need to test further on other devices, but I’m guessing this will need to be something we tell customers they need to update their OS if they run into it, which is not ideal.

Hi @ray.elward
I am sorry that you have problems to, but I’m glad it’s not just me : D

No, telling our users to update is definitely not a good solution, and I don’t even think it would be possible for us.

I’ll keep debugging to. Please let me know if you find any workaround.

1 Like

Hi @michaelpetersen,

I believe you had sent the log file to @richard.zoom before. Would you please send the log which only started one call to Richard? I’ll check with him for the log and look into it.
Thank you!

Elaine

hi, any update here? is this resolved?

The same issue here - the microphone keeps toggling every few seconds. Encountered this when trying to integrate CallKit.
Does ZoomVideoSDK do something under the hood related to CallKit actions, for example requesting CXSetMutedCallAction transaction? In my case, CallKit constantly triggers this delegate function
func provider(_ provider: CXProvider, perform action: CXSetMutedCallAction),
but I don’t request CXSetMutedCallAction on my own so seems like SDK does it somehow which is unexpected…

Hi All,

We’re investigating this issue internally and hope to make it fixed in our next release. Once the fixed version is confirmed, I’ll update it here.
Thank you for all your patience.

Elaine

2 Likes

Great news!

Do you have any time horizon for the next release?

Hi all,

We’ve noticed it is an issue that happened because of the implementation of the Callkit. Please try to override the function (void)provider:(CXProvider *)provider performSetMutedCallAction:(CXSetMutedCallAction *)action as below to see whether the issue still exists.
Thank you

- (void)provider:(CXProvider *)provider performSetMutedCallAction:(CXSetMutedCallAction *)action {
    ZoomVideoSDKUser *mySelf = [[[ZoomVideoSDK shareInstance] getSession] getMySelf];
    BOOL isMute = action.isMuted;
    if (isMute) {
        [[[ZoomVideoSDK shareInstance] getAudioHelper] muteAudio:mySelf];
    }
    else {
        [[[ZoomVideoSDK shareInstance] getAudioHelper] unmuteAudio:mySelf];
    }
    [action fulfill];
}

Elaine

3 Likes