Opening Zoom from my app with URL Scheme without having to install zoom sdk

Hi dev forum,

I would like to know what is the zoom url scheme to opening it from my actual app without having to configure add zoom sdk into my app’s iOS code.

Regards,

Ale

Hi @ale04,

You may find the URL scheme here: https://marketplace.zoom.us/docs/guides/guides/client-url-schemes

Thanks!

Hi dev forum,

I am doing the same, but using Xamarin to create both Android and iOS apps. The Zoom link works fine in Android, but does nothing in iOS. I have added zoomus (and zoom) to LSApplicationQueriesSchemes in info.plist. Is there anything else I need to configure somewhere?

Thanks for your help!

Jennie

Hey @jennie.t!

Apple provides a function for checking the validity of a URL scheme. Would you be able to call this function on the URL? https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc. If this function returns YES (or true) then the issue is likely how the URL is being opened. If it returns NO, we should be able to troubleshoot further :slight_smile:

Thanks!
Michael

Hey @jennie.t, you said it’s working in Android. Were you able to customize or add any screen when opening from URL scheme?

Thanks!

Hi @Michael_Condon and @joao.moraes,

Thanks for your help. In reply to Michael’s message, in Xamarin I am calling Launcher.CanOpenAsync() which returns true. I’m guessing that is the equivalent of the canOpenURL() Apple function you suggested.

@joao.moraes, I’m not sure what you mean by customizing or adding a screen in Zoom, but I have done a bit more experimenting:

In Android, the link opens the meeting in Zoom without camera, mic muted, and without doing the camera preview that I normally see when joining a meeting directly from the Zoom app. And when you leave the meeting, it closes Zoom and goes back to my app. For my purposes, that’s all fine.

In iOS, the same link it appears to do nothing at all (but I know it goes through that code, calling the Xamarin function Launcher.OpenAsync()). I tried sending the same link to the iPhone in an email and that does nothing either. (I tried that on the Android phone, and it wouldn’t even display the link as a hyperlink). So could there be a security setting on the iPhone that is stopping links to other apps from being “executed”? As you may have guessed, I am not normally an iPhone user. I’m using an old iPhone 6 for testing, running iOS 12.4.8.

Thanks!
Jennie

Hey @jennie.t,

When using url schemes in iOS, there is an AppDelegate function that needs to be overridden:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool

This function should be called upon touching the link. If you set a breakpoint here does it get hit when you tap the link?

Michael

Hi @Michael_Condon,

I believe the Xamarin Essentials Launcher class deals with any platform-specific issues like that.

I must point out again that the same link didn’t work from an email either (on the iPhone), so could there be a problem with the device, or something that needs to be configured or unblocked? My link is like “zoomus://zoom.us/join?confno=1234567890&pwd=123456”, which works fine on Android.

Thanks.
Jennie

Hey @jennie.t,

That is very interesting. I do not believe there are any additional settings that need to be toggled on the device. I opened safari on my device (iPhone SE: iOS 13.6), and pasted the URL in. When I pressed return I was given an alert asking if I would like to open the link in the Zoom app.

Can you try that and let me know what happens?

I also saw that In the Xamarin.Essentials: Launcher documentation, there is a “Platform Differences” section. In the iOS tab of that section they link to this page. Under the “Remarks” section it says,

If you want to define your own URL handlers, edit your Info.plist file and define a new URL type, you then must update your FinishedLaunching(UIApplication, NSDictionary) method (to handle launching the application if it is not already running) and override the M:UIKit.UIApplicationDelegate.OpenUrl* method to handle the request to open the URL.

Which may mean the open url function is not overriden automatically by Xamarin Essentials Launcher.

One other thing to check. Do other URL schemes open?

Here is one for lyft:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>lyft</string>  
</array>

if(await Launcher.CanOpenAsync("lyft://")) {
    await Launcher.OpenAsync("lyft://ridetype?id=lyft_line");
}

Let me know what happens!
Michael

Hi @Michael_Condon,

Thanks very much for your help. I tried the lyft link and that didn’t work either. But doing some more experimenting I found that the link must be executed in the main thread so it has access to the screen. So it’s now working.

Thanks!
Jennie

1 Like

Hey @jennie.t

Awesome! I am happy to hear it’s working now :slight_smile:

Let us know if you have any other questions
Michael