How to join internet audio?

One can join a zoom meeting using Internet Audio or Telephone.

Lets say in our app we always want to force internet audio.

When before joining the meeting I set audio to ON everything is fine and I join the meeting with Audio ON.

However when I join the meeting with audio OFF the macOS app is showing me the following button state.

image

As far as I’m concerned this the Join Computer Audio has absolutely nothing to do with whether I will or will not want to enable my mic at some point. It’s about whether I want to hear what other meeting participants want to say.

This is how we are joining the meeting:

func joinMeeting(
    url: String?,
    number: Int64?,
    screenName: String,
    password: String?,
    audioOn: Bool = false,
    videoOn: Bool = false,
    completion: @escaping StartMeetingCompletion
  ) {
    print("isCatchHDVideoOn: \(sdk.getSettingService()?.getVideoSetting()?.isCatchHDVideoOn() ?? false)")
    print(
      "isMuteMyVideoWhenJoinMeetingOn: \(sdk.getSettingService()?.getVideoSetting()?.isMuteMyVideoWhenJoinMeetingOn() ?? false)"
    )
    joinMeetingCompletion = completion
    sdk.getSettingService()?.getAudioSetting()?.enableAutoJoinVoip(true)
    sdk.getSettingService()?.getAudioSetting()?.enableMuteMicJoinVoip(!audioOn)
    let hdResult = sdk.getSettingService()?.getVideoSetting()?.enableCatchHDVideo(true)
    let videoResult = sdk.getSettingService()?.getVideoSetting()?.disableVideoJoinMeeting(!videoOn)
    sdkMeetingService?.getMeetingUIController()?.isShowVideoPreview(whenJoinMeeting: false)
    print("enableCatchHDVideo(true) result: \(String(describing: hdResult))")
    print("disableVideoJoinMeeting(\(!videoOn)) result: \(String(describing: videoResult))")
    print("isCatchHDVideoOn: \(sdk.getSettingService()?.getVideoSetting()?.isCatchHDVideoOn() ?? false)")
    print(
      "isMuteMyVideoWhenJoinMeetingOn: \(sdk.getSettingService()?.getVideoSetting()?.isMuteMyVideoWhenJoinMeetingOn() ?? false)"
    )
    let userType = (sdk.getAuthService()?.isAuthorized() ?? false) ? ZoomSDKUserType_ZoomUser :
    ZoomSDKUserType_WithoutLogin
    let joinMeetingElements = ZoomSDKJoinMeetingElements()
    joinMeetingElements.userType = userType
    joinMeetingElements.webinarToken = nil
    joinMeetingElements.participantId = nil
    joinMeetingElements.meetingNumber = number
    joinMeetingElements.displayName = screenName
    joinMeetingElements.password = password
    joinMeetingElements.isDirectShare = false
    joinMeetingElements.isNoVideo = !videoOn
    joinMeetingElements.isNoAuido = !audioOn
    joinMeetingElements.vanityID = nil
    let result = sdkMeetingService?.joinMeeting(joinMeetingElements)
    if result != ZoomSDKError_Success {
      joinMeetingCompletion?(ZoomMeetingResponse(
        status: .failed,
        error: .unknown,
        reason: .none,
        meeting: getCurrentMeeting()
      ))
    }
  }

Can you please enlighten me what do we see the above behavior? What do we need to do to always join the computer Audio and de-couple it from the microphone ON/OFF?

Thank you

Hi @tmiskiew, thanks for the post.

As far as I’m concerned this the Join Computer Audio has absolutely nothing to do with whether I will or will not want to enable my mic at some point

Joining computer audio is one way of transmitting and receiving audio for the meeting. Simply joining computer audio will not necessarily mute/unmute your microphone.

In order to modify settings with the default UI, you must use the default meeting settings window. You can access this by calling showMeetingComponent with MeetingComponent_Setting. An example of this call can be found here.

Thanks!

Joining computer audio is not the same or even has nothing to do with the microphone. I know.

What is this call good for then? sdk.getSettingService()?.getAudioSetting()?.enableAutoJoinVoip(true) My understanding was that it’s there to programmatically press the Join Audio button like in the screenshot of my post. Am I correct? What is the difference between what you’re suggesting and sdk.getSettingService()?.getAudioSetting()?.enableAutoJoinVoip(true)? Are we using the call correctly?

Hi @tmiskiew,

Joining computer audio is not the same or even has nothing to do with the microphone

I wouldn’t go as far as saying that it has nothing to do with the microphone. You cannot control your microphone settings (i.e. mute/unmute) without being connected to computer audio. Connecting to audio is a prerequisite to using your mic in a meeting.

What is this call good for then? My understanding was that it’s there to programmatically press the Join Audio button

Your understanding is correct, but it works with a custom meeting UI. The default UI allows modification of this setting through the meeting settings window.

Thanks!

Yes, mic doesn’t make sense when I’m not connected to audio. Are you saying the call sdk.getSettingService()?.getAudioSetting()?.enableAutoJoinVoip(true) is useless? It works for us now. I think meeting settings window is overcomplicating things for joining the meeting audio.

Hi @tmiskiew,

No, I am not saying that this method call is useless. I am saying that, with the default UI, this setting is managed through the settings window by the user. You can still control audio programmatically.

This method is equivalent to modifying this setting in your audio settings:
Screen Shot 2020-12-22 at 11.16.57 AM

Thanks!

Ok thank you for clarification.

Always happy to help!