1

我的 xamarin.forms 应用程序旨在使用Launcher.OpenAsync()“zoomus://zoom.us/join?confno=1234567890&pwd=123456”形式的 uri 方案在移动设备上加入 Zoom 会议。

这在 Android 上运行良好,但在 iOS 上似乎根本没有做任何事情。我Launcher.CanOpenAsync()事先打电话,返回true,所以uri应该没问题。Zoom 应用程序已安装。在 info.plist 我已将 zoomus(和缩放)添加到LSApplicationQueriesSchemes.

我的代码如下所示:

private void RunZoomAsync()
{
    Task zoomTask = Task.Run(async () =>
    {
        if (await Launcher.CanOpenAsync(selectedMedia.Uri))
        {
            Message = "Launching Zoom";
            await Launcher.OpenAsync(selectedMedia.Uri).ConfigureAwait(false);
        }
        else
        {
            Message = "Zoom not found. You must install Zoom from your App Store";
        }
    });
}

我在屏幕上看到了这条消息,所以我知道它找到了正确的代码。

我尝试通过电子邮件将相同的链接发送到 iPhone,但也没有任何作用。(我在 Android 手机上尝试过,电子邮件应用程序甚至不会将链接显示为超链接)。iPhone 或我的应用程序中是否有允许深度链接的设置?

您可能已经猜到了,我通常不是 iPhone 用户。我正在使用旧的 iPhone 6 进行测试,运行 iOS 12.4.8。

求助于Zoom开发者论坛,有人建议在iOS中使用url scheme时,有一个AppDelegate函数需要重写:

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

我猜上面不是 C#,Essentials Launcher 类可以处理 iOS 中所需的任何内容。

我错过了什么,还是这是一个错误?任何帮助将不胜感激。

4

2 回答 2

0

我尝试通过电子邮件将相同的链接发送到 iPhone,但也没有任何作用。(我在 Android 手机上尝试过,电子邮件应用程序甚至不会将链接显示为超链接)。iPhone 或我的应用程序中是否有允许深度链接的设置?

如果您已经安装了应用程序并且使用了正确的协议并且您的硬件和操作系统工作正常,那么这需要工作。您的问题不是由您的代码引起的(除非您使用了错误的协议),所以这是本网站的答案,因为它不处理非编码问题。

为什么您的 Zoom 应用程序无法按预期运行 - 您应该从 Zoom 客户支持开始,因为他们最有能力为您提供答案(如果存在),但您的设备极有可能在某些方面出现故障。

于 2020-08-26T14:13:44.137 回答
0

我的问题是我没有在主线程中运行 Launcher,所以(我假设)Zoom 应用程序无法访问屏幕。所以我只是改变了:

Task zoomTask = Task.Run(async () =>

至:

MainThread.BeginInvokeOnMainThread(async () =>

它现在开始工作了!

于 2020-09-01T17:00:40.543 回答