iOS and Android : How to join the meeting through a meeting link instead of meeting id and password

Description
How to join the meeting in the SDK via meeting link instead of meeting id and password.

Hey @vignesh,

Thanks for using the dev forum!

You would have to parse out the ID from the URL and have the user enter the password manually.

Thanks!
Michael

Hello @Michael_Condon
Thank you. Is there a way to pass the entire url to a method and get the meeting started?

Hey @vignesh,

Sorry, totally spaced about this function: Try using handZoomWebURL.

Thanks!
Michael

Hello @Michael_Condon
I tried using handZoomWebURL but it did not work. Am using the below code, please let me know if am doing anything wrong. Am using custom UI

if let service = getservice {
service.delegate = self
let paramDict = [kMeetingParam_Username:"(displayName)",kMeetingParam_MeetingNumber:zoomMeetingId, kMeetingParam_MeetingPassword:zoomMeetingPassword] as [String : Any]

let response = service.joinMeeting(with: paramDict)

this piece of code I have used to start the meeting using meeting id and password. As per your instruction I have used hanndZoomURL function.

let response = service.handZoomWebUrl(meetingUrl!)

But the meeting does not start if I use handZoomWebUrl

Hey @vignesh,

Hmm, ok let me run some tests real quick. Stay tuned.

Michael

Hey @vignesh,

So I just tested this function using the latest version of the SDK and was able to join a meeting. Let’s troubleshoot together :slight_smile:

First let’s try switching to a default UI, just to test if the link and function are working and that the custom UI is not causing issues.
Try running this code:

static func handZoomWebURL(_ url: String) {
    guard let meetingService = MobileRTC.shared().getMeetingService() else { return }
    
    let handZoomWebURLreturnValue = meetingService.handZoomWebUrl(url)
    
    switch handZoomWebURLreturnValue {
    case .success:
        print("Successfully called handZoomWebURL")
    default:
        print("Failed to hand Zoom Web URL with error: \(handZoomWebURLreturnValue.rawValue)")
    }
}

Let’s also check we are using a valid url. I started a meeting on my desktop using the Mac client application and pulled the link from the meeting details:
Screen Shot 2021-05-06 at 11.38.58 AM

You should not have to provide meeting details to use this function.

Let me know what happens
Thanks!

@Michael_Condon Following Delegate callback is called

func onJoinMeetingInfo(_ info: MobileRTCJoinMeetingInfo, completion: @escaping (String, String, Bool) → Void) {
completion(“testUser”, “”, false)
}

Since the info asks for

MobileRTCJoinMeetingInfo_NeedName

, completion handler is called as mentioned in the function. However it shows Waiting indicator. If I parse the same url(meeting link) for meeting id and password, I am able to join the meeting using

(MobileRTCMeetError)joinMeetingWithJoinParam:(nonnull MobileRTCMeetingJoinParam*)param;

of MobileMeetingService

Could you shed some light on what I am missing to join the meeting or do I need to follow a different approach for joining the meeting via url link

Hi @pgudivada,

Can you confirm whether or not you are setting a value to the userName property?

Thanks!

Hi Jon,
As I am using handZoomWebUrl, I did not set the value of userName as we are not passing MobileRTCMeetingJoinParam as a parameter like what we do for joinMeeting call. However based on your response, I wanted to set the value of userName. After setting the value, I am still experiencing the same issue.

Hi @pgudivada,

I’m a little uncertain about the approach you are taking based on your last two replies. In your first reply, you mention the joinMeetingWithJoinParam method by name. In the second reply you state that you are not using this method, but are using handZoomWebUrl. Can you please provide a code snippet showing how you are joining the meeting to clarify?

Thanks!

Hi @jon.zoom,
I am sorry if I was not clear. I mentioned that if I use joinMeetingWithJoinParam by parsing the url for meeting id an password, I am able to join the meeting. However if I try to join the meeting using the meeting link by using handZoomWebUrl, it shows the waiting indicator. Hope this helps.

 func joinMeeting(meetingURL urlString: String, user: User) {
   guard let ms = MobileRTC.shared().getMeetingService() else {
    return
   }

   DispatchQueue.main.async {
    let retError = ms.handZoomWebUrl(urlString)
     
   } 
 }

  MobileRTCMeetingServiceDelegate : Delegate callback is called

 func onJoinMeetingInfo(_ info: MobileRTCJoinMeetingInfo, completion: @escaping (String, String, Bool) -> Void) {
   completion("testUser", "", false)
}

If I parse the url for meetingNo and password, I am able to join the meeting

 func joinMeeting(meetingNo: String, withPassword pwd: String, user: User) {
         guard let ms = MobileRTC.shared().getMeetingService() else {
             return
         }
        let joinParam = MobileRTCMeetingJoinParam()
        joinParam.userName =  user.fullName
        joinParam.meetingNumber = meetingNo
        joinParam.password = pwd
       DispatchQueue.main.async {
           let retError = ms.joinMeeting(with: joinParam)
     }
  }

Hope the above helps

Hi @pgudivada,

Thank you for clarifying, that makes perfect sense. Generally speaking, we strongly recommend using the “regular” method instead of the handZoomWebUrl approach. When passing in the URL directly, there are some cases such as this where required information will not be included in the join URL depending on where you get it from which may hinder your ability to join the meeting.

By using the joinMeetingWithJoinParam method, you can ensure that all required information is provided in the params object and give the end user clear error messages if something is missing.

Thanks!

@jon.zoom Thanks for the response. In that case is there a specific template that Zoom follows which helps us to parse it so that I can extract the meeting id and password. If there is no standard template that I can regex against, where should the user pickup the url. In our application, we would like to provide an easy way to present the zoom client within our app so that the user does not have to enter the meeting creds.

@jon.zoom I was able to use the following regex (in swift) to extract the meeting id and password for all subdomains of zoom.us. I am not sure whether any other instance that I should take care of

((https:\\/\\/)([0-9a-zA-Z]*)([\\.]?)(zoom.us)\\/j\\/)([\\d]+)(\\?pwd=)([0-9a-zA-Z]+)$

Hi @pgudivada,

In reality, how the parsing of the URL is done is entirely up to you. We do not have any publicly documented regex patterns to use, but as long as you are accounting for the meeting number in the path and the password as the pwd query param, you should be all set!

Thanks!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.